diff --git a/src/stage/output/xv-displayer.cpp b/src/stage/output/xv-displayer.cpp index 6d23bfaab..00e7a9b74 100644 --- a/src/stage/output/xv-displayer.cpp +++ b/src/stage/output/xv-displayer.cpp @@ -142,6 +142,18 @@ namespace output { } } } + /* WARNING: some graphic cards (notably my very old NVidia card) do not properly support the XV-Keying feature. + * The above loop is written in a »defensive« way, insofar it is not permitted to set/change X attributes + * that are not provided and supported by your hardware and driver stack. + * It may thus happen (and it happens on my System) that the X driver somehow applies a default keying + * to the complete XWindow. However, if parts of that window are used by other UI elements (as is the case + * with our docking-panels), then these other widgets become "garbled" and will not repaint properly. + * It does not help to attempt to paint explicitly with low-level X functions into that problematic region, + * and I could not figure out why such an attempted fix does not work, when we paint in the on_map()-Event. + * We can paint just fine with the same low-level functions from within the put() call. + * + * Anyhow, as such the XV display works correct even in such cases, but it looks "broken" :-( + */ } if (gotPort) diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 7e35e2c21..e64b0ffe9 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -130337,10 +130337,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - + - + @@ -130355,6 +130355,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) + + + + @@ -130390,7 +130394,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - + @@ -130400,12 +130404,480 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) + + + + + + + + + + + + + + + + + + +

+ wenn man beispielsweise zwar einen XV_COLORKEY setzen kann, aber kein XV_AUTOPAINT_COLORKEY +

+ +
+
+ + + + +
+
+ + + + + + + + + + + + + + + + + +

+ ...dann kann ich das ganze Fenster füllen, durchaus auch mit beliebigen Farben (wobei hier eine Falle wartet, da die Farbtiefe unterschiedlich sein könnte). +

+ +
+ + + + +

+ dixplay_x11.c, line 623 +

+

+ +

+
+
+

+ static inline void  xv_draw_colorkey(void) { +

+

+ XSetForeground( xj_dpy, xj_gc,  0 ); +

+

+ if (xj_box[1] >  0 ) { +

+

+ XFillRectangle( xj_dpy, xj_win,  xj_gc, 0, 0,  xj_box[2], xj_box[1]); +

+

+ XFillRectangle( xj_dpy, xj_win,  xj_gc, 0, xj_box[1]+xj_box[3],  xj_box[2], xj_box[1]+xj_box[3]+xj_box[1]); +

+

+ } /* else */ +

+

+ if (xj_box[0] >  0 ) { +

+

+ XFillRectangle( xj_dpy, xj_win,  xj_gc, 0, 0,  xj_box[0], xj_box[3]); +

+

+ XFillRectangle( xj_dpy, xj_win,  xj_gc, xj_box[0]+xj_box[2],  0, xj_box[0]+xj_box[2]+xj_box[0],  xj_box[3]); +

+

+ } +

+

+ } +

+

+ +

+
+
+

+ +

+

+ ... verwende dann in XSetForeground ggfs eine andere Farbe, wie 0x00FF00 für Grün +

+ +
+ +
+ + + + + + + + + + + + + + + + + +

+     number of attributes: 7 +

+

+       "XV_SET_DEFAULTS" (range 0 to 0) +

+

+               client settable attribute +

+

+       "XV_ITURBT_709" (range 0 to 1) +

+

+               client settable attribute +

+

+               client gettable attribute (current value is 0) +

+

+       "XV_SYNC_TO_VBLANK" (range 0 to 1) +

+

+               client settable attribute +

+

+               client gettable attribute (current value is 1) +

+

+       "XV_BRIGHTNESS" (range -1000 to 1000) +

+

+               client settable attribute +

+

+               client gettable attribute (current value is 0) +

+

+       "XV_CONTRAST" (range -1000 to 1000) +

+

+               client settable attribute +

+

+               client gettable attribute (current value is 0) +

+

+       "XV_SATURATION" (range -1000 to 1000) +

+

+               client settable attribute +

+

+               client gettable attribute (current value is 0) +

+

+       "XV_HUE" (range -1000 to 1000) +

+

+               client settable attribute +

+

+               client gettable attribute (current value is 0) +

+

+     maximum XvImage size: 16384 x 16384 +

+

+     Number of image formats: 4 +

+

+       id: 0x32595559 (YUY2) +

+

+         guid: 59555932-0000-0010-8000-00aa00389b71 +

+

+         bits per pixel: 16 +

+

+         number of planes: 1 +

+

+         type: YUV (packed) +

+

+       id: 0x32315659 (YV12) +

+

+         guid: 59563132-0000-0010-8000-00aa00389b71 +

+

+         bits per pixel: 12 +

+

+         number of planes: 3 +

+

+         type: YUV (planar) +

+

+       id: 0x59565955 (UYVY) +

+

+         guid: 55595659-0000-0010-8000-00aa00389b71 +

+

+         bits per pixel: 16 +

+

+         number of planes: 1 +

+

+         type: YUV (packed) +

+

+       id: 0x30323449 (I420) +

+

+         guid: 49343230-0000-0010-8000-00aa00389b71 +

+

+         bits per pixel: 12 +

+

+         number of planes: 3 +

+

+         type: YUV (planar) +

+ +
+
+ + + + +

+ number of attributes: 5 +

+

+ "XV_COLORKEY" (range 0 to 16777215) +

+

+ client settable attribute +

+

+ client gettable attribute (current value is 2110) +

+

+ "XV_BRIGHTNESS" (range -128 to 127) +

+

+ client settable attribute +

+

+ client gettable attribute (current value is 0) +

+

+ "XV_CONTRAST" (range 0 to 255) +

+

+ client settable attribute +

+

+ client gettable attribute (current value is 128) +

+

+ "XV_SATURATION" (range 0 to 255) +

+

+ client settable attribute +

+

+ client gettable attribute (current value is 128) +

+

+ "XV_HUE" (range -180 to 180) +

+

+ client settable attribute +

+

+ client gettable attribute (current value is 0) +

+

+ maximum XvImage size: 1024 x 1024 +

+

+ Number of image formats: 7 +

+

+ id: 0x32595559 (YUY2) +

+

+ guid: 59555932-0000-0010-8000-00aa00389b71 +

+

+ bits per pixel: 16 +

+

+ number of planes: 1 +

+

+ type: YUV (packed) +

+

+ id: 0x32315659 (YV12) +

+

+ guid: 59563132-0000-0010-8000-00aa00389b71 +

+

+ bits per pixel: 12 +

+

+ number of planes: 3 +

+

+ type: YUV (planar) +

+

+ id: 0x30323449 (I420) +

+

+ guid: 49343230-0000-0010-8000-00aa00389b71 +

+

+ bits per pixel: 12 +

+

+ number of planes: 3 +

+

+ type: YUV (planar) +

+

+ id: 0x36315652 (RV16) +

+

+ guid: 52563135-0000-0000-0000-000000000000 +

+

+ bits per pixel: 16 +

+

+ number of planes: 1 +

+

+ type: RGB (packed) +

+

+ depth: 0 +

+

+ red, green, blue masks: 0x1f, 0x3e0, 0x7c00 +

+

+ id: 0x35315652 (RV15) +

+

+ guid: 52563136-0000-0000-0000-000000000000 +

+

+ bits per pixel: 16 +

+

+ number of planes: 1 +

+

+ type: RGB (packed) +

+

+ depth: 0 +

+

+ red, green, blue masks: 0x1f, 0x7e0, 0xf800 +

+

+ id: 0x31313259 (Y211) +

+

+ 222 +

+

+ guid: 59323131-0000-0010-8000-00aa00389b71 +

+

+ bits per pixel: 6 +

+

+ number of planes: 3 +

+

+ type: YUV (packed) +

+

+ id: 0x0 +

+

+ guid: 00000000-0000-0000-0000-000000000000 +

+

+ bits per pixel: 0 +

+

+ number of planes: 0 +

+

+ type: RGB (packed) +

+

+ depth: 1 +

+

+ red, green, blue masks: 0x0, 0x0, 0x0 +

+ +
+
+
+
+ + + + + + + + + + - + + + + + + + + + @@ -130439,7 +130911,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - + + + @@ -130451,7 +130925,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - + @@ -130475,7 +130949,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - + @@ -130653,8 +131127,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - - + + @@ -130711,10 +131185,22 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension) - - - - + + + + + + + + +

+ Es ist ein sehr alter Standard, durchaus komplex und detailiertere Doku ist kaum noch zu finden (-> Einzelfragen auf Stackoverflow). Manpages sind, wie üblich, nur dann sinnvoll, wenn man schon weiß, worum es geht). Hinzu kommt, daß es wohl erhebliche Streubreite gibt bzgl. der Implementierung. »Beispielsweise« unterstützt meine uralt-Nvidia-Karte nicht das automatische Keying (Attribut XV_COLORKEY und XV_AUTOPAINT_COLORKEY sind nicht definiert, aber der X-Treiber macht ein Auto-Keying auf dem gesamten X-Window und das ist problematisch mit den Dockingpanels, die das gleiche XWindow verwenden) +

+ +
+ + +
@@ -161076,7 +161562,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo - + @@ -166915,6 +167401,22 @@ that situation will improve in forseeable future. + + + + +

+ Weil da nun die Kopfzeile (Docking-Panel) nicht richtig gezeichnet wird, bzw. pseudo-transparent wird. +

+

+ Abbruch. Es zeigt sich, daß meine Grafikkarte das Auto-Keying von XV nicht unterstützt, d.h. die Attribute XV_AUTOPAINT_COLORKEY und XV_COLORKEY sind nicht definiert. Habe noch mind. 2 Stunden herumexperimentiert, bin aber auf keinen »grünen Zweig« gekommen. Diese Erfahrung läßt es für mich sehr fraglich erscheinen, ob wir XV unterstützen sollen....? +

+ +
+ + + +