gnome-shell-plugin: Extract crossing event ignores

This is a preliminary patch to make the diff in the next patch
cleaner. This just shuffles code around without changing anything.

https://bugzilla.gnome.org/show_bug.cgi?id=690590
This commit is contained in:
Jasper St. Pierre 2012-12-20 21:39:22 -05:00
parent 4b095d532c
commit 5faf7cb59e

View File

@ -285,32 +285,13 @@ gnome_shell_plugin_kill_switch_workspace (MetaPlugin *plugin)
} }
static gboolean static gboolean
gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, ignore_crossing_event (MetaPlugin *plugin,
XEvent *xev) XEvent *xev)
{ {
MetaScreen *screen = meta_plugin_get_screen (plugin); MetaScreen *screen = meta_plugin_get_screen (plugin);
ClutterStage *stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen)); ClutterStage *stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin); if (xev->xcrossing.window == clutter_x11_get_stage_window (stage))
#ifdef GLX_INTEL_swap_event
if (shell_plugin->have_swap_event &&
xev->type == (shell_plugin->glx_event_base + GLX_BufferSwapComplete))
{
GLXBufferSwapComplete *swap_complete_event;
swap_complete_event = (GLXBufferSwapComplete *)xev;
/* Buggy early versions of the INTEL_swap_event implementation in Mesa
* can send this with a ust of 0. Simplify life for consumers
* by ignoring such events */
if (swap_complete_event->ust != 0)
shell_perf_log_event_x (shell_perf_log_get_default (),
"glx.swapComplete",
swap_complete_event->ust);
}
#endif
if ((xev->xany.type == EnterNotify || xev->xany.type == LeaveNotify)
&& xev->xcrossing.window == clutter_x11_get_stage_window (stage))
{ {
/* If the pointer enters a child of the stage window (eg, a /* If the pointer enters a child of the stage window (eg, a
* trayicon), we want to consider it to still be in the stage, * trayicon), we want to consider it to still be in the stage,
@ -332,6 +313,38 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
return TRUE; return TRUE;
} }
return FALSE;
}
static gboolean
gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
XEvent *xev)
{
GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin);
#ifdef GLX_INTEL_swap_event
if (shell_plugin->have_swap_event &&
xev->type == (shell_plugin->glx_event_base + GLX_BufferSwapComplete))
{
GLXBufferSwapComplete *swap_complete_event;
swap_complete_event = (GLXBufferSwapComplete *)xev;
/* Buggy early versions of the INTEL_swap_event implementation in Mesa
* can send this with a ust of 0. Simplify life for consumers
* by ignoring such events */
if (swap_complete_event->ust != 0)
shell_perf_log_event_x (shell_perf_log_get_default (),
"glx.swapComplete",
swap_complete_event->ust);
}
#endif
/* Make sure that Clutter doesn't see certain focus change events,
* so that when we're moving into something like a tray icon, we
* don't unfocus the container. */
if ((xev->xany.type == EnterNotify || xev->xany.type == LeaveNotify) &&
ignore_crossing_event (plugin, xev))
return TRUE;
/* /*
* Pass the event to shell-global * Pass the event to shell-global
*/ */