backends: Move most of the code from meta_backend_init into the subclasses

This commit is contained in:
Jasper St. Pierre
2014-04-21 19:47:04 -04:00
parent 31d744195d
commit 48dc544bef
6 changed files with 77 additions and 69 deletions

View File

@ -26,6 +26,10 @@
#include "meta-backend-x11.h"
#include <gdk/gdkx.h>
#include <clutter/x11/clutter-x11.h>
#include <meta/util.h>
#include "meta-idle-monitor-xsync.h"
G_DEFINE_TYPE (MetaBackendX11, meta_backend_x11, META_TYPE_BACKEND);
@ -50,6 +54,23 @@ meta_backend_x11_class_init (MetaBackendX11Class *klass)
static void
meta_backend_x11_init (MetaBackendX11 *x11)
{
/* When running as an X11 compositor, we install our own event filter and
* pass events to Clutter explicitly, so we need to prevent Clutter from
* handling our events.
*
* However, when running as a Wayland compostior under X11 nested, Clutter
* Clutter needs to see events related to its own window. We need to
* eventually replace this with a proper frontend / backend split: Clutter
* under nested is connecting to the "host X server" to get its events it
* needs to put up a window, and GTK+ is connecting to the "inner X server".
* The two would the same in the X11 compositor case, but not when running
* XWayland as a Wayland compositor.
*/
if (!meta_is_wayland_compositor ())
{
clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
clutter_x11_disable_event_retrieval ();
}
}
void