Hi Krzysztof,

Quick question, as I haven't heard back from you, do you plan to follow up on these patches or should I fix them?

Cheers,
Olivier

On 14/10/15 18:24, Olivier Fourdan wrote:
Hi

----- Original Message -----
More worryingly, I tried xvidtune with that patch applied and that
led to a crash in Xwayland - I'll investigate further to see if this
is something in my tree or with the patch as I suspect.

Quick follow up, the crash occurs in VidModeGetMonitor() from xf86VidMode.c 
because the output is NULL:

Program received signal SIGSEGV, Segmentation fault.
VidModeGetMonitor (scrnIndex=<optimized out>, 
monitor=monitor@entry=0x7fff4b38a828) at xf86VidMode.c:178
178         mon->heightmm = output->mmHeight;
(gdb) bt
#0  VidModeGetMonitor (scrnIndex=<optimized out>, 
monitor=monitor@entry=0x7fff4b38a828) at xf86VidMode.c:178
#1  0x0000000000427077 in ProcXF86VidModeGetMonitor (client=0x2cfce10) at 
xf86vmode.c:1080
#2  0x000000000043b717 in Dispatch () at dispatch.c:430
#3  0x000000000043f603 in dix_main (argc=10, argv=0x7fff4b38aa38, envp=<optimized 
out>) at main.c:300
#4  0x00007fe17c66f580 in __libc_start_main () from /lib64/libc.so.6
#5  0x0000000000422ad9 in _start ()
(gdb) p *mon
$1 = {id = 0x2cdef10 "Wayland", vendor = 0x2cf3e40 "X.org", model = 0x2d218e0 
"Xwayland", nHsync = 1, hsync = {{hi = 0,
       lo = 0}, {hi = 0, lo = 0}, {hi = 0, lo = 0}, {hi = 0, lo = 0}, {hi = 0, 
lo = 0}, {hi = 0, lo = 0}, {hi = 0,
       lo = 0}, {hi = 0, lo = 0}}, nVrefresh = 1, vrefresh = {{hi = 0, lo = 0}, 
{hi = 0, lo = 0}, {hi = 0, lo = 0}, {
       hi = 0, lo = 0}, {hi = 0, lo = 0}, {hi = 0, lo = 0}, {hi = 0, lo = 0}, 
{hi = 0, lo = 0}}, Modes = 0x0, Last = 0x0,
   gamma = {red = 0, green = 0, blue = 0}, widthmm = 0, heightmm = 0, options = 
0x0, DDC = 0x0, reducedblanking = 0,
   maxPixClock = 0}
(gdb) p output
$2 = (RROutputPtr) 0x0

The fix is pretty obvious, and xvidtune will work with this:

  Bool
  VidModeGetCurrentModeline(int scrnIndex, void **mode, int *dotClock)
  {
@@ -188,8 +175,11 @@ VidModeGetMonitor(int scrnIndex, void **monitor)
      mon->nVrefresh = 1;
      mon->Modes = NULL;
      mon->Last = NULL;
-    mon->heightmm = output->mmHeight;
-    mon->widthmm = output->mmWidth;
+    if (output)
+    {
+      mon->heightmm = output->mmHeight;
+      mon->widthmm = output->mmWidth;
+    }
      *monitor = mon;

      return TRUE;

(not saying this is the right solution, but that suffice to avoid the crash)

Yet, all reported values reported for HSynv/VSync/pixel clock/etc. are wrong:

Vendor: X.org, Model: Xwayland
Num hsync: 1, Num vsync: 1
hsync range 0:   0.00 -   0.00
vsync range 0:   0.00 -   0.00

So this implementation is really just to please apps that check for the 
existence of the extension, no more - Any app that would actually try to do 
something with it would be most likely disappointed :-)

I wonder, can't we reuse more of the xrandr data to get some of these values 
correct (even if it's just for querying ant not changing/setting values)?

xrandr --verbose gives sensible data on this exact same hardware:

Screen 0: minimum 320 x 200, current 3840 x 1200, maximum 8192 x 8192
XWAYLAND0 connected 1920x1200+1920+0 (0x24) normal (normal) 520mm x 320mm
         Identifier: 0x21
         Timestamp:  23275741
         Subpixel:   unknown
         Gamma:      1.0:1.0:1.0
         Brightness: 0.0
         Clones:
         CRTC:       0
         CRTCs:      0
         Transform:  1.000000 0.000000 0.000000
                     0.000000 1.000000 0.000000
                     0.000000 0.000000 1.000000
                    filter:
   1920x1200@0.1Hz (0x24)  0.000MHz -HSync +VSync *current +preferred
         h: width  1920 start 1976 end 2160 total 2400 skew    0 clock   0.00KHz
         v: height 1200 start 1203 end 1209 total 1212           clock   0.00Hz
XWAYLAND1 connected 1920x1080+0+0 (0x25) normal (normal) 310mm x 170mm
         Identifier: 0x23
         Timestamp:  23275741
         Subpixel:   unknown
         Gamma:      1.0:1.0:1.0
         Brightness: 0.0
         Clones:
         CRTC:       1
         CRTCs:      1
         Transform:  1.000000 0.000000 0.000000
                     0.000000 1.000000 0.000000
                     0.000000 0.000000 1.000000
                    filter:
   1920x1080@0.1Hz (0x25)  0.000MHz -HSync +VSync *current +preferred
         h: width  1920 start 1976 end 2160 total 2400 skew    0 clock   0.00KHz
         v: height 1080 start 1083 end 1088 total 1091           clock   0.00Hz

So there should be a way to report some of these via Xfree86-VidModeExtension.

Cheers,
Olivier
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to