[Xquartz-dev] XQuartz 2.5.0_rc1

Jeremy Huddleston jeremyhu at apple.com
Wed Mar 17 16:56:09 PDT 2010


On Mar 17, 2010, at 14:40, Brandon Allbery wrote:

> On Mar 17, 2010, at 17:15 , Bill Campbell wrote:
>> The clusterssh program is a perl::Tk script which executes
>> multiple xterms via ssh to the remote systems.  It is not a
>> problem with the remote perl::Tk routing not getting screen size
>> change info as I always shut that connection down before putting
>> the Macbook Pro to sleep.  One thing I have not tried doing is
>> opening a new xterm in the running X11, and executing the
>> commands from it to see if it gets new size information on
>> startup while an open xterm does not.
>> 
>> I have to plead ignorance in how X11 handles display geometry in
>> one screen, much less multiple monitors.
> 
> 
> XQuartz doesn't even try currently;

Uhm... are you kidding?  This support was added quite some time ago.  It was buggy for a while, but it has been working for quite some time.  This is the whole reason for the XP_EVENT_DISPLAY_CHANGED xp_event from Xplugin.  This event is translated into an kXquartzDisplayChanged event to the DDX which results in QuartzUpdateScreens being called.  Here's the code that handles that:

http://cgit.freedesktop.org/~jeremyhu/xserver/tree/hw/xquartz/quartz.c line 234
http://cgit.freedesktop.org/~jeremyhu/xserver/tree/hw/xquartz/xpr/xprScreen.c line 395

If you are having trouble, please enable the debug logging and report the relevant lines from the debug log.  To enable the debug logging, just create a file ~/x11-debug.txt and restart XQuartz.app

You should see lines like this when the display configuration changes:

 DEBUG_LOG("displayCount: %d\n", (int)displayCount);
 DEBUG_LOG("  screen union origin: (%d,%d) size: (%d,%d).\n",
              *x, *y, *width, *height);
 DEBUG_LOG("    placed at X11 coordinate (%d,%d).\n",
              (int)frame.origin.x, (int)frame.origin.y);
 DEBUG_LOG("Root Window: %dx%d @ (%d, %d) darwinMainScreen (%d, %d) xy (%d, %d) dixScreenOrigins (%d, %d)\n", width, height, x - sx, y - sy, darwinMainScreenX, darwinMainScreenY, x, y, dixScreenOrigins[pScreen->myNum].x, dixScreenOrigins[pScreen->myNum].y);


That information will help narrow down the problem.  If you DON'T see the lines, that is evident that the event is not being sent for some reason, and we will need to figure out why that is.

--Jeremy


> it would be nice if monitor changes were passed on as XRandR extension events, but right now the X session isn't informed of any changes and you need to restart XQuartz to get it to see the change.

That's not completely true.  We don't support RandR, but clients are free to query the screen at any time.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5820 bytes
Desc: not available
URL: <http://lists.macosforge.org/pipermail/xquartz-dev/attachments/20100317/de5b6ca7/attachment.bin>


More information about the Xquartz-dev mailing list