[Xquartz-dev] Expose restacking

Ben Byer bbyer at apple.com
Sun Dec 2 07:07:06 PST 2007


On Nov 30, 2007, at 2:41 PM, Nathaniel Gray wrote:

> I just ran the following test after instrumenting the
> kXDarwinWindowState event (quartz.c, line 460ish):
>
> Starting from Terminal.app without X11 running:
> $ xterm &
> $ xterm &
> Then I used Expose to restack the xterms.  Note that focus never  
> went to X11.app
> $ killall X11
>
> Then I tried again, but this time I didn't do anything with Expose:
> $ xterm &
> $ xterm &
> $ killall X11
>
> The log output was identical for both tests.  So we're not getting
> that event on Expose window restacking.


Interesting.

And we're not getting a WindowMoved notification, right?  If you look  
in /usr/include/Xplugin.h, here are the different kinds of events we  
can get from Xplugin:

/* Event types generated by the plugin. */

enum xp_event_type_enum {
     /* The global display configuration changed somehow. */
     XP_EVENT_DISPLAY_CHANGED    = 1 << 0,

     /* A window changed state. Argument is xp_window_state_event */
     XP_EVENT_WINDOW_STATE_CHANGED = 1 << 1,

     /* An async request encountered an error. Argument is of type
        xp_async_error_event */
     XP_EVENT_ASYNC_ERROR        = 1 << 2,

     /* Sent when a surface is destroyed as a side effect of destroying
        a window. Arg is of type xp_surface_id. */
     XP_EVENT_SURFACE_DESTROYED  = 1 << 3,

   /* Sent when any GL contexts pointing at the given surface need to
        call xp_update_gl_context () to refresh their state (because the
        window moved or was resized. Arg is of type xp_surface_id. */
     XP_EVENT_SURFACE_CHANGED    = 1 << 4,

     /* Sent when a window has been moved. Arg is of type  
xp_window_id. */
     XP_EVENT_WINDOW_MOVED       = 1 << 5,
};

/* Possible window states. */

enum xp_window_state_enum {
     /* The window is not in the global list of possibly-visible  
windows. */
     XP_WINDOW_STATE_OFFSCREEN   = 1 << 0,

     /* Parts of the window may be obscured by other windows. */
     XP_WINDOW_STATE_OBSCURED    = 1 << 1,
};


Point being, if Expose is moving windows around on us and we're not  
getting told via this mechanism, I need to ask for the Xplugin  
interface to be fixed.
--
Ben Byer
CoreOS / BSD Technology Group, XDarwin maintainer



More information about the Xquartz-dev mailing list