mirror of
https://github.com/brl/mutter.git
synced 2025-06-14 01:09:30 +00:00
compositor: Move out X11 compositing code into sub type
Introduce MetaCompositorX11, dealing with being a X11 compositor, and MetaCompositorServer, being a compositor while also being the display server itself, e.g. a Wayland display server. https://gitlab.gnome.org/GNOME/mutter/merge_requests/727
This commit is contained in:

committed by
Georges Basile Stavracas Neto

parent
9af90bf9c1
commit
984aad4b86
@ -27,11 +27,14 @@
|
||||
#include <xkbcommon/xkbcommon-x11.h>
|
||||
|
||||
#include "backends/meta-backend-private.h"
|
||||
#include "backends/meta-dnd-private.h"
|
||||
#include "backends/x11/meta-cursor-renderer-x11.h"
|
||||
#include "backends/x11/meta-gpu-xrandr.h"
|
||||
#include "backends/x11/meta-input-settings-x11.h"
|
||||
#include "backends/x11/meta-monitor-manager-xrandr.h"
|
||||
#include "backends/x11/cm/meta-renderer-x11-cm.h"
|
||||
#include "compositor/meta-compositor-x11.h"
|
||||
#include "core/display-private.h"
|
||||
|
||||
struct _MetaBackendX11Cm
|
||||
{
|
||||
@ -328,6 +331,20 @@ meta_backend_x11_cm_handle_host_xevent (MetaBackendX11 *backend_x11,
|
||||
MetaMonitorManagerXrandr *monitor_manager_xrandr =
|
||||
META_MONITOR_MANAGER_XRANDR (monitor_manager);
|
||||
Display *xdisplay = meta_backend_x11_get_xdisplay (x11);
|
||||
gboolean bypass_clutter = FALSE;
|
||||
MetaDisplay *display;
|
||||
|
||||
display = meta_get_display ();
|
||||
if (display)
|
||||
{
|
||||
MetaCompositor *compositor = display->compositor;
|
||||
MetaCompositorX11 *compositor_x11 = META_COMPOSITOR_X11 (compositor);
|
||||
Display *xdisplay = meta_backend_x11_get_xdisplay (x11);
|
||||
|
||||
if (meta_dnd_handle_xdnd_event (backend, compositor_x11,
|
||||
xdisplay, event))
|
||||
bypass_clutter = TRUE;
|
||||
}
|
||||
|
||||
if (event->type == meta_backend_x11_get_xkb_event_base (x11))
|
||||
{
|
||||
@ -351,8 +368,10 @@ meta_backend_x11_cm_handle_host_xevent (MetaBackendX11 *backend_x11,
|
||||
}
|
||||
}
|
||||
|
||||
return meta_monitor_manager_xrandr_handle_xevent (monitor_manager_xrandr,
|
||||
event);
|
||||
bypass_clutter |=
|
||||
meta_monitor_manager_xrandr_handle_xevent (monitor_manager_xrandr, event);
|
||||
|
||||
return bypass_clutter;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include <string.h>
|
||||
#include <xkbcommon/xkbcommon-x11.h>
|
||||
|
||||
#include "backends/meta-dnd-private.h"
|
||||
#include "backends/meta-idle-monitor-private.h"
|
||||
#include "backends/meta-stage-private.h"
|
||||
#include "backends/x11/meta-clutter-backend-x11.h"
|
||||
@ -326,25 +325,20 @@ handle_host_xevent (MetaBackend *backend,
|
||||
MetaBackendX11 *x11 = META_BACKEND_X11 (backend);
|
||||
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
|
||||
gboolean bypass_clutter = FALSE;
|
||||
MetaDisplay *display;
|
||||
|
||||
XGetEventData (priv->xdisplay, &event->xcookie);
|
||||
|
||||
{
|
||||
MetaDisplay *display = meta_get_display ();
|
||||
display = meta_get_display ();
|
||||
if (display)
|
||||
{
|
||||
MetaCompositor *compositor = display->compositor;
|
||||
MetaPluginManager *plugin_mgr =
|
||||
meta_compositor_get_plugin_manager (compositor);
|
||||
|
||||
if (display)
|
||||
{
|
||||
MetaCompositor *compositor = display->compositor;
|
||||
MetaPluginManager *plugin_mgr =
|
||||
meta_compositor_get_plugin_manager (compositor);
|
||||
|
||||
if (meta_plugin_manager_xevent_filter (plugin_mgr, event))
|
||||
bypass_clutter = TRUE;
|
||||
|
||||
if (meta_dnd_handle_xdnd_event (backend, compositor, priv->xdisplay, event))
|
||||
bypass_clutter = TRUE;
|
||||
}
|
||||
}
|
||||
if (meta_plugin_manager_xevent_filter (plugin_mgr, event))
|
||||
bypass_clutter = TRUE;
|
||||
}
|
||||
|
||||
bypass_clutter = (meta_backend_x11_handle_host_xevent (x11, event) ||
|
||||
bypass_clutter);
|
||||
|
Reference in New Issue
Block a user