[mutter] Conditionalize Wayland support again



commit 5f0fab21566ab9c46817f33d1e78f504825402ef
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Aug 13 20:19:35 2014 -0400

    Conditionalize Wayland support again

 configure.ac                        |    9 ++++++---
 src/Makefile.am                     |   10 +++++++---
 src/backends/meta-cursor-renderer.c |    1 -
 src/backends/meta-cursor-tracker.c  |    1 -
 src/backends/meta-cursor.c          |    4 ++++
 src/backends/meta-cursor.h          |    4 +++-
 src/backends/native/meta-launcher.c |    1 -
 src/compositor/compositor.c         |    2 ++
 src/compositor/meta-window-actor.c  |    5 +++++
 src/core/display.c                  |    8 ++++++++
 src/core/events.c                   |   11 +++++++++--
 src/core/main.c                     |   12 ++++++++++++
 src/core/window.c                   |   13 ++++++++++++-
 src/x11/events.c                    |    5 ++++-
 14 files changed, 72 insertions(+), 14 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 2463140..61f67e2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -79,12 +79,9 @@ MUTTER_PC_MODULES="
    xcomposite >= 0.2 xfixes xext xdamage xi >= 1.6.0
    xcursor
    $CLUTTER_PACKAGE >= 1.19.5
-   clutter-wayland-1.0
-   clutter-wayland-compositor-1.0
    clutter-egl-1.0
    cogl-1.0 >= 1.17.1
    libinput
-   wayland-server >= 1.5.90
    upower-glib >= 0.99.0
    gnome-desktop-3.0
    xkbfile
@@ -202,6 +199,12 @@ if test $have_native_backend = yes; then
 fi
 AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test $have_native_backend = yes])
 
+PKG_CHECK_MODULES(MUTTER_WAYLAND, [clutter-wayland-1.0 clutter-wayland-compositor-1.0 wayland-server >= 
1.5.90], [have_wayland=yes], [have_wayland=no])
+if test $have_wayland = yes; then
+   AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
+fi
+AM_CONDITIONAL([HAVE_WAYLAND],[test $have_wayland = yes])
+
 PKG_CHECK_EXISTS([xi >= 1.6.99.1],
                  AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))
 
diff --git a/src/Makefile.am b/src/Makefile.am
index f6b0c09..a0146fc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -115,8 +115,6 @@ libmutter_la_SOURCES =                              \
        compositor/meta-surface-actor.h         \
        compositor/meta-surface-actor-x11.c     \
        compositor/meta-surface-actor-x11.h     \
-       compositor/meta-surface-actor-wayland.c \
-       compositor/meta-surface-actor-wayland.h \
        compositor/meta-texture-rectangle.c     \
        compositor/meta-texture-rectangle.h     \
        compositor/meta-texture-tower.c         \
@@ -212,7 +210,12 @@ libmutter_la_SOURCES =                             \
        x11/window-x11-private.h                \
        x11/xprops.c                            \
        x11/xprops.h                            \
-       x11/mutter-Xatomtype.h                  \
+       x11/mutter-Xatomtype.h
+
+if HAVE_WAYLAND
+libmutter_la_SOURCES +=                                \
+       compositor/meta-surface-actor-wayland.c \
+       compositor/meta-surface-actor-wayland.h \
        wayland/meta-wayland.c                  \
        wayland/meta-wayland.h                  \
        wayland/meta-wayland-private.h          \
@@ -237,6 +240,7 @@ libmutter_la_SOURCES =                              \
        wayland/meta-wayland-outputs.h          \
        wayland/window-wayland.c                \
        wayland/window-wayland.h
+endif
 
 if HAVE_NATIVE_BACKEND
 libmutter_la_SOURCES +=                                        \
diff --git a/src/backends/meta-cursor-renderer.c b/src/backends/meta-cursor-renderer.c
index 3d1f857..67f92e5 100644
--- a/src/backends/meta-cursor-renderer.c
+++ b/src/backends/meta-cursor-renderer.c
@@ -31,7 +31,6 @@
 #include <meta/util.h>
 
 #include <cogl/cogl.h>
-#include <cogl/cogl-wayland-server.h>
 #include <clutter/clutter.h>
 
 #include "meta-stage.h"
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index 1b23131..905b5d1 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -34,7 +34,6 @@
 #include <meta/errors.h>
 
 #include <cogl/cogl.h>
-#include <cogl/cogl-wayland-server.h>
 #include <clutter/clutter.h>
 
 #include <gdk/gdk.h>
diff --git a/src/backends/meta-cursor.c b/src/backends/meta-cursor.c
index 3d88b68..592e26f 100644
--- a/src/backends/meta-cursor.c
+++ b/src/backends/meta-cursor.c
@@ -39,7 +39,9 @@
 #include <X11/extensions/Xfixes.h>
 #include <X11/Xcursor/Xcursor.h>
 
+#ifdef HAVE_WAYLAND
 #include <cogl/cogl-wayland-server.h>
+#endif
 
 MetaCursorReference *
 meta_cursor_reference_ref (MetaCursorReference *self)
@@ -247,6 +249,7 @@ meta_cursor_reference_from_theme (MetaCursor cursor)
   return self;
 }
 
+#ifdef HAVE_WAYLAND
 static void
 meta_cursor_image_load_from_buffer (MetaCursorImage    *image,
                                     struct wl_resource *buffer,
@@ -345,6 +348,7 @@ meta_cursor_reference_from_buffer (struct wl_resource *buffer,
 
   return self;
 }
+#endif
 
 CoglTexture *
 meta_cursor_reference_get_cogl_texture (MetaCursorReference *cursor,
diff --git a/src/backends/meta-cursor.h b/src/backends/meta-cursor.h
index e9e1290..b627dc0 100644
--- a/src/backends/meta-cursor.h
+++ b/src/backends/meta-cursor.h
@@ -28,13 +28,15 @@ MetaCursorReference * meta_cursor_reference_ref (MetaCursorReference *cursor);
 void meta_cursor_reference_unref (MetaCursorReference *cursor);
 
 #include <meta/common.h>
-#include <wayland-server.h>
 
 MetaCursorReference * meta_cursor_reference_from_theme  (MetaCursor          cursor);
 
+#ifdef HAVE_WAYLAND
+#include <wayland-server.h>
 MetaCursorReference * meta_cursor_reference_from_buffer (struct wl_resource *buffer,
                                                          int                 hot_x,
                                                          int                 hot_y);
+#endif
 
 MetaCursor meta_cursor_reference_get_meta_cursor (MetaCursorReference *cursor);
 
diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c
index 70454bb..2333bee 100644
--- a/src/backends/native/meta-launcher.c
+++ b/src/backends/native/meta-launcher.c
@@ -41,7 +41,6 @@
 #include "dbus-utils.h"
 #include "meta-dbus-login1.h"
 
-#include "wayland/meta-wayland-private.h"
 #include "backends/meta-backend-private.h"
 #include "meta-cursor-renderer-native.h"
 
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index a887c06..4843dea 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -396,8 +396,10 @@ after_stage_paint (ClutterStage *stage,
   for (l = compositor->windows; l; l = l->next)
     meta_window_actor_post_paint (l->data);
 
+#ifdef HAVE_WAYLAND
   if (meta_is_wayland_compositor ())
     meta_wayland_compositor_paint_finished (meta_wayland_compositor_get_default ());
+#endif
 }
 
 static void
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index f5ea128..4347a05 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -32,7 +32,10 @@
 
 #include "meta-surface-actor.h"
 #include "meta-surface-actor-x11.h"
+
+#ifdef HAVE_WAYLAND
 #include "meta-surface-actor-wayland.h"
+#endif
 
 #include "wayland/meta-wayland-surface.h"
 
@@ -596,6 +599,7 @@ meta_window_actor_get_shape_bounds (MetaWindowActor       *self,
 
   cairo_region_get_extents (priv->shape_region, bounds);
 
+#ifdef HAVE_WAYLAND
   if (META_IS_SURFACE_ACTOR_WAYLAND (priv->surface))
     {
       double scale = priv->surface ?
@@ -605,6 +609,7 @@ meta_window_actor_get_shape_bounds (MetaWindowActor       *self,
       bounds->width *= scale;
       bounds->height *= scale;
     }
+#endif
 }
 
 static void
diff --git a/src/core/display.c b/src/core/display.c
index b6bfad2..e99a6d6 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -70,7 +70,9 @@
 #include "x11/group-props.h"
 #include "x11/xprops.h"
 
+#ifdef HAVE_WAYLAND
 #include "wayland/meta-xwayland-private.h"
+#endif
 
 /*
  * SECTION:pings
@@ -468,6 +470,7 @@ meta_set_gnome_wm_keybindings (const char *wm_keybindings)
 void
 meta_display_cancel_touch (MetaDisplay *display)
 {
+#ifdef HAVE_WAYLAND
   MetaWaylandCompositor *compositor;
 
   if (!meta_is_wayland_compositor ())
@@ -475,6 +478,7 @@ meta_display_cancel_touch (MetaDisplay *display)
 
   compositor = meta_wayland_compositor_get_default ();
   meta_wayland_touch_cancel (&compositor->seat->touch);
+#endif
 }
 
 static void
@@ -545,8 +549,10 @@ meta_display_open (void)
       return FALSE;
     }
 
+#ifdef HAVE_WAYLAND
   if (meta_is_wayland_compositor ())
     meta_xwayland_complete_init ();
+#endif
 
   if (meta_is_syncing ())
     XSynchronize (xdisplay, True);
@@ -1436,6 +1442,7 @@ meta_display_queue_autoraise_callback (MetaDisplay *display,
 void
 meta_display_sync_wayland_input_focus (MetaDisplay *display)
 {
+#ifdef HAVE_WAYLAND
   MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
   MetaWindow *focus_window = NULL;
 
@@ -1451,6 +1458,7 @@ meta_display_sync_wayland_input_focus (MetaDisplay *display)
   meta_wayland_compositor_set_input_focus (compositor, focus_window);
 
   meta_wayland_seat_repick (compositor->seat);
+#endif
 }
 
 void
diff --git a/src/core/events.c b/src/core/events.c
index 040813a..e456be2 100644
--- a/src/core/events.c
+++ b/src/core/events.c
@@ -35,7 +35,9 @@
 #endif
 
 #include "x11/events.h"
+#ifdef HAVE_WAYLAND
 #include "wayland/meta-wayland-private.h"
+#endif
 #include "meta-surface-actor.h"
 
 static MetaWindow *
@@ -162,17 +164,20 @@ meta_display_handle_event (MetaDisplay        *display,
                            const ClutterEvent *event)
 {
   MetaWindow *window;
-  gboolean bypass_clutter = FALSE, bypass_wayland = FALSE;
-  MetaWaylandCompositor *compositor = NULL;
+  gboolean bypass_clutter = FALSE;
+  G_GNUC_UNUSED gboolean bypass_wayland = FALSE;
   MetaGestureTracker *tracker;
 
   meta_display_update_pointer_emulating_sequence (display, event);
 
+#ifdef HAVE_WAYLAND
+  MetaWaylandCompositor *compositor = NULL;
   if (meta_is_wayland_compositor ())
     {
       compositor = meta_wayland_compositor_get_default ();
       meta_wayland_compositor_update (compositor, event);
     }
+#endif
 
   handle_idletime_for_event (event);
 
@@ -281,11 +286,13 @@ meta_display_handle_event (MetaDisplay        *display,
   if (display->grab_op == META_GRAB_OP_WAYLAND_POPUP)
     bypass_clutter = TRUE;
 
+#ifdef HAVE_WAYLAND
   if (compositor && !bypass_wayland)
     {
       if (meta_wayland_compositor_handle_event (compositor, event))
         bypass_clutter = TRUE;
     }
+#endif
 
   display->current_time = CurrentTime;
   return bypass_clutter;
diff --git a/src/core/main.c b/src/core/main.c
index d327a8e..bcf1ffa 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -78,7 +78,9 @@
 
 #include "x11/session.h"
 
+#ifdef HAVE_WAYLAND
 #include "wayland/meta-wayland.h"
+#endif
 
 /*
  * The exit code we'll return to our parent process when we eventually die.
@@ -160,7 +162,9 @@ static gchar    *opt_client_id;
 static gboolean  opt_replace_wm;
 static gboolean  opt_disable_sm;
 static gboolean  opt_sync;
+#ifdef HAVE_WAYLAND
 static gboolean  opt_wayland;
+#endif
 #ifdef HAVE_NATIVE_BACKEND
 static gboolean  opt_display_server;
 #endif
@@ -201,12 +205,14 @@ static GOptionEntry meta_options[] = {
     N_("Make X calls synchronous"),
     NULL
   },
+#ifdef HAVE_WAYLAND
   {
     "wayland", 0, 0, G_OPTION_ARG_NONE,
     &opt_wayland,
     N_("Run as a wayland compositor"),
     NULL
   },
+#endif
 #ifdef HAVE_NATIVE_BACKEND
   {
     "display-server", 0, 0, G_OPTION_ARG_NONE,
@@ -271,8 +277,10 @@ meta_finalize (void)
     meta_display_close (display,
                         CurrentTime); /* I doubt correct timestamps matter here */
 
+#ifdef HAVE_WAYLAND
   if (meta_is_wayland_compositor ())
     meta_wayland_finalize ();
+#endif
 }
 
 static gboolean
@@ -323,7 +331,9 @@ meta_init (void)
 #endif
     clutter_set_windowing_backend (CLUTTER_WINDOWING_X11);
 
+#ifdef HAVE_WAYLAND
   meta_set_is_wayland_compositor (opt_wayland);
+#endif
 
   if (g_get_home_dir ())
     if (chdir (g_get_home_dir ()) < 0)
@@ -336,6 +346,7 @@ meta_init (void)
   g_irepository_prepend_search_path (MUTTER_PKGLIBDIR);
 #endif
 
+#ifdef HAVE_WAYLAND
   if (meta_is_wayland_compositor ())
     {
       /* NB: When running as a hybrid wayland compositor we run our own headless X
@@ -343,6 +354,7 @@ meta_init (void)
       meta_wayland_init ();
     }
   else
+#endif
     meta_select_display (opt_display_name);
 
   meta_set_syncing (opt_sync || (g_getenv ("MUTTER_SYNC") != NULL));
diff --git a/src/core/window.c b/src/core/window.c
index 2a45f95..45638c8 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -49,14 +49,17 @@
 #include <string.h>
 #include <math.h>
 
+#include <meta/meta-cursor-tracker.h>
 #include "meta/compositor-mutter.h"
 
 #include "x11/window-x11.h"
 #include "x11/window-props.h"
 #include "x11/xprops.h"
 
+#ifdef HAVE_WAYLAND
 #include "wayland/window-wayland.h"
 #include "wayland/meta-wayland-private.h"
+#endif
 
 #include "backends/meta-backend-private.h"
 
@@ -779,8 +782,12 @@ _meta_window_shared_new (MetaDisplay         *display,
 
   if (client_type == META_WINDOW_CLIENT_TYPE_X11)
     window = g_object_new (META_TYPE_WINDOW_X11, NULL);
-  else
+#ifdef HAVE_WAYLAND
+  else if (client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
     window = g_object_new (META_TYPE_WINDOW_WAYLAND, NULL);
+#endif
+  else
+    g_assert_not_reached ();
 
   window->constructing = TRUE;
 
@@ -1221,6 +1228,7 @@ meta_window_unmanage (MetaWindow  *window,
 
   meta_verbose ("Unmanaging %s\n", window->desc);
 
+#ifdef HAVE_WAYLAND
   /* This needs to happen for both Wayland and XWayland clients,
    * so it can't be in MetaWindowWayland. */
   if (window->surface)
@@ -1228,6 +1236,7 @@ meta_window_unmanage (MetaWindow  *window,
       meta_wayland_surface_set_window (window->surface, NULL);
       window->surface = NULL;
     }
+#endif
 
   if (window->visible_to_compositor)
     {
@@ -2434,8 +2443,10 @@ meta_window_show (MetaWindow *window)
   if (did_show)
     meta_screen_queue_check_fullscreen (window->screen);
 
+#ifdef HAVE_WAYLAND
   if (did_show && window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
     meta_wayland_compositor_repick (meta_wayland_compositor_get_default ());
+#endif
 
   /*
    * Now that we have shown the window, we no longer want to consider the
diff --git a/src/x11/events.c b/src/x11/events.c
index 869e40c..5b8659a 100644
--- a/src/x11/events.c
+++ b/src/x11/events.c
@@ -1448,12 +1448,15 @@ handle_other_xevent (MetaDisplay *display,
     case ClientMessage:
       if (window)
         {
+#ifdef HAVE_WAYLAND
           if (event->xclient.message_type == display->atom_WL_SURFACE_ID)
             {
               guint32 surface_id = event->xclient.data.l[0];
               meta_xwayland_handle_wl_surface_id (window, surface_id);
             }
-          else if (!frame_was_receiver)
+          else
+#endif
+          if (!frame_was_receiver)
             meta_window_x11_client_message (window, event);
         }
       else


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]