From a4eb7c36f4eecd43319b82f8680b9a752e0b619d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= Date: Thu, 14 Apr 2016 20:23:56 +0300 Subject: require composite extensions at build-time Require the XComposite, XDamage, XFixes and XRender extensions at build-time. --- configure.ac | 74 +------------------------------------ src/compositor/compositor-xrender.c | 42 --------------------- src/compositor/compositor.c | 30 --------------- src/core/display-private.h | 19 +--------- src/core/display.c | 16 -------- src/core/main.c | 18 ++------- src/core/screen-private.h | 2 - src/core/screen.c | 13 +------ src/include/screen.h | 2 - 9 files changed, 9 insertions(+), 207 deletions(-) diff --git a/configure.ac b/configure.ac index 139cc87e..5f443719 100644 --- a/configure.ac +++ b/configure.ac @@ -119,8 +119,9 @@ AC_C_BIGENDIAN GTK_MIN_VERSION=3.19.6 GIO_MIN_VERSION=2.25.10 CANBERRA_GTK=libcanberra-gtk3 +XCOMPOSITE_VERSION=0.3 -METACITY_PC_MODULES="gtk+-3.0 >= $GTK_MIN_VERSION gio-2.0 >= $GIO_MIN_VERSION pango >= 1.2.0 gsettings-desktop-schemas >= 3.3.0" +METACITY_PC_MODULES="gtk+-3.0 >= $GTK_MIN_VERSION gio-2.0 >= $GIO_MIN_VERSION pango >= 1.2.0 gsettings-desktop-schemas >= 3.3.0 xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage" GLIB_GSETTINGS @@ -153,11 +154,6 @@ AC_ARG_ENABLE(startup-notification, [disable metacity's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),, enable_startup_notification=auto) -AC_ARG_ENABLE(compositor, - AC_HELP_STRING([--disable-compositor], - [disable metacity's compositing manager]),, - enable_compositor=auto) - AC_ARG_ENABLE(render, AC_HELP_STRING([--disable-render], [disable metacity's use of the RENDER extension]),, @@ -205,70 +201,6 @@ else echo "Building without libstartup-notification" fi -## init this, it gets set either in the compositor check below -## or the render-specific check later -have_xrender=no - -XCOMPOSITE_VERSION=0.3 -if test x$enable_compositor = xyes; then - have_xcomposite=yes -elif test x$enable_compositor = xauto; then - echo "Building compositing manager by default now." - have_xcomposite=yes -else - have_xcomposite=no -fi - -if test x$have_xcomposite = xyes; then - AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION]) - if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then - AC_MSG_RESULT([yes]) - else - AC_MSG_ERROR([no. Use --disable-compositor to disable.]) - fi -fi - -if test x$have_xcomposite = xyes; then - METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage" - AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, 1, [Building with compositing manager support]) - echo "Building with compositing manager" - - ## force on render also - have_xrender=yes -else - echo "Building without compositing manager" -fi - -## if no compositor, still possibly enable render -if test x$have_xcomposite = xno; then - XRENDER_VERSION=0.0 - AC_MSG_CHECKING([xrender >= $XRENDER_VERSION]) - if $PKG_CONFIG --atleast-version $XRENDER_VERSION xrender; then - have_xrender=yes - else - have_xrender=no - fi - AC_MSG_RESULT($have_xrender) - - if test x$enable_render = xyes; then - have_xrender=yes - echo "Render support forced on" - elif test x$enable_render = xauto; then - true - else - have_xrender=no - fi - - if test x$have_xrender = xyes; then - echo "Building with Render" - METACITY_PC_MODULES="$METACITY_PC_MODULES xrender >= $XRENDER_VERSION" - fi -fi ## have_composite - -if test x$have_xrender = xyes; then - AC_DEFINE(HAVE_RENDER, , [Building with Render extension support]) -fi - AC_MSG_CHECKING([Xcursor]) if $PKG_CONFIG xcursor; then have_xcursor=yes @@ -476,9 +408,7 @@ echo " Canberra ....................: ${enable_canberra}" echo " XFree86 Xinerama ............: ${use_xfree_xinerama}" echo " Solaris Xinerama ............: ${use_solaris_xinerama}" echo " Startup notification ........: ${have_startup_notification}" -echo " Compositing manager .........: ${have_xcomposite}" echo " Session management ..........: ${found_sm}" echo " Resize-and-rotate ...........: ${found_randr}" -echo " Render ......................: ${have_xrender}" echo " Xcursor .....................: ${have_xcursor}" echo "" diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c index e913c937..40347e26 100644 --- a/src/compositor/compositor-xrender.c +++ b/src/compositor/compositor-xrender.c @@ -24,8 +24,6 @@ #include -#ifdef HAVE_COMPOSITE_EXTENSIONS - #include #include #include @@ -2819,22 +2817,18 @@ xrender_add_window (MetaCompositor *compositor, Window xwindow, XWindowAttributes *attrs) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaCompositorXRender *xrc = (MetaCompositorXRender *) compositor; MetaScreen *screen = meta_screen_for_x_screen (attrs->screen); meta_error_trap_push (xrc->display); add_win (screen, window, xwindow); meta_error_trap_pop (xrc->display, FALSE); -#endif } static void xrender_remove_window (MetaCompositor *compositor, Window xwindow) { -#ifdef HAVE_COMPOSITE_EXTENSIONS -#endif } static void @@ -2887,7 +2881,6 @@ static void xrender_manage_screen (MetaCompositor *compositor, MetaScreen *screen) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaCompScreen *info; MetaDisplay *display = meta_screen_get_display (screen); Display *xdisplay = meta_display_get_xdisplay (display); @@ -2966,14 +2959,12 @@ xrender_manage_screen (MetaCompositor *compositor, /* Now we're up and running we can show the output if needed */ show_overlay_window (screen, info->output); -#endif } static void xrender_unmanage_screen (MetaCompositor *compositor, MetaScreen *screen) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaDisplay *display = meta_screen_get_display (screen); Display *xdisplay = meta_display_get_xdisplay (display); MetaCompScreen *info; @@ -3020,7 +3011,6 @@ xrender_unmanage_screen (MetaCompositor *compositor, g_free (info); meta_screen_set_compositor_data (screen, NULL); -#endif } static void @@ -3028,17 +3018,12 @@ xrender_set_updates (MetaCompositor *compositor, MetaWindow *window, gboolean updates) { -#ifdef HAVE_COMPOSITE_EXTENSIONS - -#endif } static void xrender_destroy (MetaCompositor *compositor) { -#ifdef HAVE_COMPOSITE_EXTENSIONS g_free (compositor); -#endif } #if 0 @@ -3053,8 +3038,6 @@ xrender_begin_move (MetaCompositor *compositor, int grab_x, int grab_y) { -#ifdef HAVE_COMPOSITE_EXTENSIONS -#endif } static void @@ -3063,16 +3046,12 @@ xrender_update_move (MetaCompositor *compositor, int x, int y) { -#ifdef HAVE_COMPOSITE_EXTENSIONS -#endif } static void xrender_end_move (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS -#endif } #endif /* 0 */ @@ -3080,7 +3059,6 @@ static void xrender_free_window (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaCompositorXRender *xrc; MetaFrame *frame; Window xwindow; @@ -3094,7 +3072,6 @@ xrender_free_window (MetaCompositor *compositor, xwindow = meta_window_get_xwindow (window); destroy_win (xrc->display, xwindow, FALSE); -#endif } static void @@ -3102,7 +3079,6 @@ xrender_process_event (MetaCompositor *compositor, XEvent *event, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaCompositorXRender *xrc = (MetaCompositorXRender *) compositor; /* * This trap is so that none of the compositor functions cause @@ -3165,16 +3141,12 @@ xrender_process_event (MetaCompositor *compositor, #ifndef USE_IDLE_REPAINT repair_display (xrc->display); #endif - - return; -#endif } static cairo_surface_t * xrender_get_window_surface (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaFrame *frame; Window xwindow; MetaScreen *screen; @@ -3206,7 +3178,6 @@ xrender_get_window_surface (MetaCompositor *compositor, return cairo_xlib_surface_create (display, pixmap, cw->attrs.visual, cw->attrs.width, cw->attrs.height); -#endif } static void @@ -3214,7 +3185,6 @@ xrender_set_active_window (MetaCompositor *compositor, MetaScreen *screen, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaCompositorXRender *xrc = (MetaCompositorXRender *) compositor; MetaDisplay *display; Display *xdisplay; @@ -3360,14 +3330,12 @@ xrender_set_active_window (MetaCompositor *compositor, #ifdef USE_IDLE_REPAINT add_repair (display); #endif -#endif } static void xrender_maximize_window (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaFrame *frame = meta_window_get_frame (window); Window xid = frame ? meta_frame_get_xwindow (frame) : meta_window_get_xwindow (window); MetaCompWindow *cw = find_window_in_display (meta_window_get_display (window), xid); @@ -3376,14 +3344,12 @@ xrender_maximize_window (MetaCompositor *compositor, return; cw->needs_shadow = window_has_shadow (cw); -#endif } static void xrender_unmaximize_window (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaFrame *frame = meta_window_get_frame (window); Window xid = frame ? meta_frame_get_xwindow (frame) : meta_window_get_xwindow (window); MetaCompWindow *cw = find_window_in_display (meta_window_get_display (window), xid); @@ -3392,7 +3358,6 @@ xrender_unmaximize_window (MetaCompositor *compositor, return; cw->needs_shadow = window_has_shadow (cw); -#endif } static MetaCompositor comp_info = { @@ -3413,7 +3378,6 @@ static MetaCompositor comp_info = { MetaCompositor * meta_compositor_xrender_new (MetaDisplay *display) { -#ifdef HAVE_COMPOSITE_EXTENSIONS const gchar *atom_names[] = { "_XROOTPMAP_ID", "_XSETROOT_ID", @@ -3474,10 +3438,4 @@ meta_compositor_xrender_new (MetaDisplay *display) g_timeout_add (2000, (GSourceFunc) timeout_debug, xrc); return compositor; -#else - return NULL; -#endif } - -#endif /* HAVE_COMPOSITE_EXTENSIONS */ - diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index f2ba167d..a63f30ef 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -24,21 +24,15 @@ MetaCompositor * meta_compositor_new (MetaDisplay *display) { -#ifdef HAVE_COMPOSITE_EXTENSIONS /* At some point we would have a way to select between backends */ return meta_compositor_xrender_new (display); -#else - return NULL; -#endif } void meta_compositor_destroy (MetaCompositor *compositor) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->destroy) compositor->destroy (compositor); -#endif } void @@ -47,40 +41,32 @@ meta_compositor_add_window (MetaCompositor *compositor, Window xwindow, XWindowAttributes *attrs) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->add_window) compositor->add_window (compositor, window, xwindow, attrs); -#endif } void meta_compositor_remove_window (MetaCompositor *compositor, Window xwindow) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->remove_window) compositor->remove_window (compositor, xwindow); -#endif } void meta_compositor_manage_screen (MetaCompositor *compositor, MetaScreen *screen) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->manage_screen) compositor->manage_screen (compositor, screen); -#endif } void meta_compositor_unmanage_screen (MetaCompositor *compositor, MetaScreen *screen) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->unmanage_screen) compositor->unmanage_screen (compositor, screen); -#endif } void @@ -88,10 +74,8 @@ meta_compositor_set_updates (MetaCompositor *compositor, MetaWindow *window, gboolean updates) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->set_updates) compositor->set_updates (compositor, window, updates); -#endif } void @@ -99,24 +83,18 @@ meta_compositor_process_event (MetaCompositor *compositor, XEvent *event, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->process_event) compositor->process_event (compositor, event, window); -#endif } cairo_surface_t * meta_compositor_get_window_surface (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->get_window_surface) return compositor->get_window_surface (compositor, window); else return NULL; -#else - return NULL; -#endif } void @@ -124,10 +102,8 @@ meta_compositor_set_active_window (MetaCompositor *compositor, MetaScreen *screen, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->set_active_window) compositor->set_active_window (compositor, screen, window); -#endif } /* These functions are unused at the moment */ @@ -154,28 +130,22 @@ void meta_compositor_end_move (MetaCompositor *compositor, void meta_compositor_free_window (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->free_window) compositor->free_window (compositor, window); -#endif } void meta_compositor_maximize_window (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->maximize_window) compositor->maximize_window (compositor, window); -#endif } void meta_compositor_unmaximize_window (MetaCompositor *compositor, MetaWindow *window) { -#ifdef HAVE_COMPOSITE_EXTENSIONS if (compositor && compositor->unmaximize_window) compositor->unmaximize_window (compositor, window); -#endif } diff --git a/src/core/display-private.h b/src/core/display-private.h index e85818ea..50ead9b6 100644 --- a/src/core/display-private.h +++ b/src/core/display-private.h @@ -257,42 +257,27 @@ struct _MetaDisplay int xsync_error_base; int shape_event_base; int shape_error_base; -#ifdef HAVE_RENDER int render_event_base; int render_error_base; -#endif -#ifdef HAVE_COMPOSITE_EXTENSIONS int composite_event_base; int composite_error_base; int damage_event_base; int damage_error_base; int xfixes_event_base; int xfixes_error_base; -#endif unsigned int have_xsync : 1; #define META_DISPLAY_HAS_XSYNC(display) ((display)->have_xsync) unsigned int have_shape : 1; #define META_DISPLAY_HAS_SHAPE(display) ((display)->have_shape) - -#ifdef HAVE_RENDER unsigned int have_render : 1; #define META_DISPLAY_HAS_RENDER(display) ((display)->have_render) -#else -#define META_DISPLAY_HAS_RENDER(display) FALSE -#endif -#ifdef HAVE_COMPOSITE_EXTENSIONS unsigned int have_composite : 1; - unsigned int have_damage : 1; - unsigned int have_xfixes : 1; #define META_DISPLAY_HAS_COMPOSITE(display) ((display)->have_composite) + unsigned int have_damage : 1; #define META_DISPLAY_HAS_DAMAGE(display) ((display)->have_damage) + unsigned int have_xfixes : 1; #define META_DISPLAY_HAS_XFIXES(display) ((display)->have_xfixes) -#else -#define META_DISPLAY_HAS_COMPOSITE(display) FALSE -#define META_DISPLAY_HAS_DAMAGE(display) FALSE -#define META_DISPLAY_HAS_XFIXES(display) FALSE -#endif }; /* Xserver time can wraparound, thus comparing two timestamps needs to take diff --git a/src/core/display.c b/src/core/display.c index 8a97fb6b..e9ce0a98 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -59,20 +59,16 @@ #include #endif #include -#ifdef HAVE_RENDER #include -#endif #ifdef HAVE_XKB #include #endif #ifdef HAVE_XCURSOR #include #endif -#ifdef HAVE_COMPOSITE_EXTENSIONS #include #include #include -#endif #include #define GRAB_OP_IS_WINDOW_SWITCH(g) \ @@ -498,7 +494,6 @@ meta_display_open (void) the_display->shape_event_base); } -#ifdef HAVE_RENDER { the_display->have_render = FALSE; @@ -519,11 +514,7 @@ meta_display_open (void) the_display->render_error_base, the_display->render_event_base); } -#else /* HAVE_RENDER */ - meta_verbose ("Not compiled with Render support\n"); -#endif /* !HAVE_RENDER */ -#ifdef HAVE_COMPOSITE_EXTENSIONS { int composite_major_version = 0; int composite_minor_version = 0; @@ -600,9 +591,6 @@ meta_display_open (void) the_display->xfixes_error_base, the_display->xfixes_event_base); } -#else /* HAVE_COMPOSITE_EXTENSIONS */ - meta_verbose ("Not compiled with Composite support\n"); -#endif /* !HAVE_COMPOSITE_EXTENSIONS */ #ifdef HAVE_XCURSOR { @@ -5381,18 +5369,14 @@ meta_display_get_focus_window (MetaDisplay *display) return display->focus_window; } -#ifdef HAVE_COMPOSITE_EXTENSIONS int meta_display_get_damage_event_base (MetaDisplay *display) { return display->damage_event_base; } -#endif -#ifdef HAVE_COMPOSITE_EXTENSIONS int meta_display_get_shape_event_base (MetaDisplay *display) { return display->shape_event_base; } -#endif diff --git a/src/core/main.c b/src/core/main.c index 2e250177..aa01df37 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -148,11 +148,6 @@ meta_print_compilation_info (void) #else meta_verbose ("Compiled without startup notification\n"); #endif -#ifdef HAVE_COMPOSITE_EXTENSIONS - meta_verbose ("Compiled with composite extensions\n"); -#else - meta_verbose ("Compiled without composite extensions\n"); -#endif } /** @@ -205,13 +200,6 @@ typedef struct gboolean no_force_fullscreen; } MetaArguments; -#ifdef HAVE_COMPOSITE_EXTENSIONS -#define COMPOSITE_OPTS_FLAGS 0 -#else /* HAVE_COMPOSITE_EXTENSIONS */ -/* No compositor, so don't show the arguments in --help */ -#define COMPOSITE_OPTS_FLAGS G_OPTION_FLAG_HIDDEN -#endif /* HAVE_COMPOSITE_EXTENSIONS */ - /** * Parses argc and argv and returns the * arguments that Metacity understands in meta_args. @@ -273,19 +261,19 @@ meta_parse_options (int *argc, char ***argv, NULL }, { - "composite", 'c', COMPOSITE_OPTS_FLAGS, G_OPTION_ARG_NONE, + "composite", 'c', G_OPTION_ARG_NONE, G_OPTION_ARG_NONE, &my_args.composite, N_("Turn compositing on"), NULL }, { - "no-composite", 0, COMPOSITE_OPTS_FLAGS, G_OPTION_ARG_NONE, + "no-composite", 0, G_OPTION_ARG_NONE, G_OPTION_ARG_NONE, &my_args.no_composite, N_("Turn compositing off"), NULL }, { - "no-force-fullscreen", 0, COMPOSITE_OPTS_FLAGS, G_OPTION_ARG_NONE, + "no-force-fullscreen", 0, G_OPTION_ARG_NONE, G_OPTION_ARG_NONE, &my_args.no_force_fullscreen, N_("Don't make fullscreen windows that are maximized and have no decorations"), NULL diff --git a/src/core/screen-private.h b/src/core/screen-private.h index 8b9f619c..2e84b52e 100644 --- a/src/core/screen-private.h +++ b/src/core/screen-private.h @@ -112,10 +112,8 @@ struct _MetaScreen guint startup_sequence_timeout; #endif -#ifdef HAVE_COMPOSITE_EXTENSIONS Window wm_cm_selection_window; guint32 wm_cm_timestamp; -#endif guint work_area_idle; diff --git a/src/core/screen.c b/src/core/screen.c index b0f1e292..e8972b82 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -456,10 +456,8 @@ meta_screen_new (MetaDisplay *display, LeaveWindowMask | EnterWindowMask | KeyPressMask | KeyReleaseMask | FocusChangeMask | StructureNotifyMask | -#ifdef HAVE_COMPOSITE_EXTENSIONS ExposureMask | -#endif - attr.your_event_mask); + attr.your_event_mask); if (meta_error_trap_pop_with_return (display, FALSE) != Success) { meta_warning (_("Screen %d on display \"%s\" already has a window manager\n"), @@ -490,11 +488,10 @@ meta_screen_new (MetaDisplay *display, screen->wm_sn_atom = wm_sn_atom; screen->wm_sn_timestamp = manager_timestamp; -#ifdef HAVE_COMPOSITE_EXTENSIONS screen->wm_cm_selection_window = meta_create_offscreen_window (xdisplay, xroot, NoEventMask); -#endif + screen->work_area_idle = 0; screen->active_workspace = NULL; @@ -783,9 +780,7 @@ meta_screen_manage_all_windows (MetaScreen *screen) &info->attrs); if (info->xwindow == screen->no_focus_window || info->xwindow == screen->flash_window || -#ifdef HAVE_COMPOSITE_EXTENSIONS info->xwindow == screen->wm_cm_selection_window || -#endif info->xwindow == screen->wm_sn_selection_window) { meta_verbose ("Not managing our own windows\n"); continue; @@ -806,7 +801,6 @@ meta_screen_manage_all_windows (MetaScreen *screen) void meta_screen_composite_all_windows (MetaScreen *screen) { -#ifdef HAVE_COMPOSITE_EXTENSIONS MetaDisplay *display; GList *windows, *list; @@ -840,7 +834,6 @@ meta_screen_composite_all_windows (MetaScreen *screen) g_list_foreach (windows, (GFunc)g_free, NULL); g_list_free (windows); -#endif } MetaScreen* @@ -2889,7 +2882,6 @@ meta_screen_set_compositor_data (MetaScreen *screen, screen->compositor_data = compositor; } -#ifdef HAVE_COMPOSITE_EXTENSIONS void meta_screen_set_cm_selection (MetaScreen *screen) { @@ -2917,4 +2909,3 @@ meta_screen_unset_cm_selection (MetaScreen *screen) XSetSelectionOwner (screen->display->xdisplay, a, None, screen->wm_cm_timestamp); } -#endif /* HAVE_COMPOSITE_EXTENSIONS */ diff --git a/src/include/screen.h b/src/include/screen.h index 4f55dc0b..8ccdb69e 100644 --- a/src/include/screen.h +++ b/src/include/screen.h @@ -38,9 +38,7 @@ void meta_screen_set_compositor_data (MetaScreen *screen, MetaScreen *meta_screen_for_x_screen (Screen *xscreen); -#ifdef HAVE_COMPOSITE_EXTENSIONS void meta_screen_set_cm_selection (MetaScreen *screen); void meta_screen_unset_cm_selection (MetaScreen *screen); -#endif #endif -- cgit v1.2.1