diff --git a/configure.in b/configure.in index c029023f1..50a5d7469 100644 --- a/configure.in +++ b/configure.in @@ -127,35 +127,11 @@ if test "$enable_compile_warnings" != no ; then fi changequote([,])dnl -AC_MSG_CHECKING([which gtk+ version to compile against]) -AC_ARG_WITH([gtk], - AC_HELP_STRING([--with-gtk=3.0|2.0], - [which gtk+ version to compile against (default: 3.0)]), - [case "$with_gtk" in - 2.0|3.0) ;; - *) AC_MSG_ERROR([invalid gtk+ version specified]);; - esac], - [with_gtk=3.0]) -AC_MSG_RESULT([$with_gtk]) +GTK_MIN_VERSION=2.90.7 +CANBERRA_GTK=libcanberra-gtk3 +CANBERRA_GTK_VERSION=0.26 -case "$with_gtk" in - 2.0) GTK_API_VERSION=2.0 - GTK_MIN_VERSION=2.18 - CANBERRA_GTK=libcanberra-gtk - CANBERRA_GTK_VERSION=0.24 - ;; - 3.0) GTK_API_VERSION=3.0 - GTK_MIN_VERSION=2.90.7 - CANBERRA_GTK=libcanberra-gtk3 - CANBERRA_GTK_VERSION=0.26 - AC_DEFINE(USE_CAIRO_REGION, 1, [Use cairo_region_t instead of GdkRegion]) - ;; -esac - -AM_CONDITIONAL(INSTALL_LIBMUTTER_PRIVATE, test "$with_gtk" = "3.0") - -MUTTER_PC_MODULES="gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION pango >= 1.2.0 cairo >= 1.10.0" -AC_SUBST(GTK_API_VERSION) +MUTTER_PC_MODULES="gtk+-3.0 >= $GTK_MIN_VERSION pango >= 1.2.0 cairo >= 1.10.0" AC_ARG_ENABLE(gconf, AC_HELP_STRING([--disable-gconf], @@ -215,8 +191,8 @@ AM_GLIB_GNU_GETTEXT # GRegex requires Glib-2.14.0 PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0) # gtk_window_set_icon_name requires gtk2+-2.6.0 -PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION) -PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION) +PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-3.0 >= $GTK_MIN_VERSION) +PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-3.0 >= $GTK_MIN_VERSION) # Unconditionally use this dir to avoid a circular dep with gnomecc GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings" @@ -574,7 +550,7 @@ fi dnl ========================================================================== echo " -mutter-$VERSION (using gtk+-${GTK_API_VERSION}): +mutter-$VERSION prefix: ${prefix} source code location: ${srcdir} diff --git a/src/Makefile.am b/src/Makefile.am index 0d966e06d..09b90d51a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,11 +1,7 @@ # Flag build for parallelism; see https://savannah.gnu.org/patch/?6905 .AUTOPARALLEL: -if INSTALL_LIBMUTTER_PRIVATE lib_LTLIBRARIES = libmutter-private.la -else -noinst_LTLIBRARIES = libmutter-private.la -endif SUBDIRS=wm-tester tools compositor/plugins @@ -44,10 +40,6 @@ mutter_SOURCES= \ compositor/shadow.h \ compositor/tidy/tidy-texture-frame.c \ compositor/tidy/tidy-texture-frame.h \ - gdk-compat.h \ - gtk-compat.h \ - gdk2-drawing-utils.c \ - gdk2-drawing-utils.h \ include/compositor.h \ include/meta-plugin.h \ include/meta-window-actor.h \ @@ -147,8 +139,6 @@ libmutter_private_la_SOURCES= \ include/common.h \ ui/preview-widget.c \ ui/preview-widget.h \ - gdk2-drawing-utils.c \ - gdk2-drawing-utils.h \ ui/theme-parser.c \ ui/theme.c \ ui/theme.h @@ -186,17 +176,11 @@ libmutterinclude_extra_headers = \ ui/preview-widget.h \ include/atomnames.h -if INSTALL_LIBMUTTER_PRIVATE libmutterincludedir = $(includedir)/mutter/mutter-private libmutterinclude_HEADERS = \ $(libmutterinclude_base_headers) \ $(libmutterinclude_extra_headers) -else -noinst_HEADERS = \ - $(libmutterinclude_base_headers) \ - $(libmutterinclude_extra_headers) -endif mutter_theme_viewer_SOURCES= \ ui/theme-viewer.c @@ -226,11 +210,11 @@ Meta-$(api_version).gir: $(G_IR_SCANNER) mutter $(libmutterinclude_HEADERS) $(mu --warn-all \ --warn-error \ --include=GObject-2.0 \ - --include=Gdk-@GTK_API_VERSION@ \ - --include=Gtk-@GTK_API_VERSION@ \ + --include=Gdk-3.0 \ + --include=Gtk-3.0 \ --include=Clutter-1.0 \ --pkg=clutter-1.0 \ - --pkg=gtk+-@GTK_API_VERSION@ \ + --pkg=gtk+-3.0 \ --include=xlib-2.0 \ --include=xfixes-4.0 \ --program=$$pwd/mutter \ @@ -305,11 +289,9 @@ CLEANFILES = \ inlinepixbufs.h: $(IMAGES) $(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h -if INSTALL_LIBMUTTER_PRIVATE pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libmutter-private.pc mutter-plugins.pc -endif EXTRA_DIST=$(desktopfiles_files) \ $(wmproperties_files) \ diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index d7bf7026a..fc13b6137 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -444,7 +444,7 @@ meta_compositor_manage_screen (MetaCompositor *compositor, XCompositeRedirectSubwindows (xdisplay, xroot, CompositeRedirectManual); XSync (xdisplay, FALSE); - if (meta_error_trap_pop_with_return (display, FALSE)) + if (meta_error_trap_pop_with_return (display)) { g_warning ("Another compositing manager is running on screen %i", screen_number); @@ -568,7 +568,7 @@ meta_compositor_add_window (MetaCompositor *compositor, add_win (window); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } void diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 65a1bda56..756d234f8 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -272,7 +272,7 @@ window_decorated_notify (MetaWindow *mw, { meta_error_trap_push (display); XDamageDestroy (xdisplay, priv->damage); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); priv->damage = None; } @@ -411,7 +411,7 @@ meta_window_actor_dispose (GObject *object) { meta_error_trap_push (display); XDamageDestroy (xdisplay, priv->damage); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); priv->damage = None; } @@ -1582,7 +1582,7 @@ check_needs_pixmap (MetaWindowActor *self) priv->back_pixmap = XCompositeNameWindowPixmap (xdisplay, xwindow); - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) { /* Probably a BadMatch if the window isn't viewable; we could * GrabServer/GetWindowAttributes/NameWindowPixmap/UngrabServer/Sync @@ -1630,7 +1630,7 @@ check_needs_pixmap (MetaWindowActor *self) full = TRUE; } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); priv->needs_pixmap = FALSE; } @@ -1718,7 +1718,7 @@ check_needs_reshape (MetaWindowActor *self) ShapeBounding, &n_rects, &ordering); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); if (rects) { @@ -1766,7 +1766,7 @@ meta_window_actor_pre_paint (MetaWindowActor *self) { meta_error_trap_push (display); XDamageSubtract (xdisplay, priv->damage, None, None); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); priv->received_damage = FALSE; } diff --git a/src/core/core.c b/src/core/core.c index 68807eb96..ec703316f 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -348,7 +348,7 @@ meta_core_lower_beneath_focus_window (Display *xdisplay, xwindow, CWSibling | CWStackMode, &changes); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } void diff --git a/src/core/delete.c b/src/core/delete.c index fae704bdc..81f6c8c1b 100644 --- a/src/core/delete.c +++ b/src/core/delete.c @@ -136,7 +136,7 @@ meta_window_delete (MetaWindow *window, window->desc); XKillClient (window->display->xdisplay, window->xwindow); } - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); meta_display_ping_window (window->display, window, @@ -200,7 +200,7 @@ meta_window_kill (MetaWindow *window) window->desc); meta_error_trap_push (window->display); XKillClient (window->display->xdisplay, window->xwindow); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } void diff --git a/src/core/display.c b/src/core/display.c index 6909c3934..719184260 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -347,7 +347,7 @@ sn_error_trap_pop (SnDisplay *sn_display, MetaDisplay *display; display = meta_display_for_x_display (xdisplay); if (display != NULL) - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } #endif @@ -890,7 +890,7 @@ meta_display_open (void) timestamp); } - meta_error_trap_pop (the_display, FALSE); + meta_error_trap_pop (the_display); } meta_display_ungrab (the_display); @@ -1099,7 +1099,7 @@ meta_display_screen_for_xwindow (MetaDisplay *display, meta_error_trap_push (display); attr.screen = NULL; result = XGetWindowAttributes (display->xdisplay, xwindow, &attr); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); /* Note, XGetWindowAttributes is on all kinds of crack * and returns 1 on success 0 on failure, rather than Success @@ -1492,7 +1492,7 @@ window_raise_with_delay_callback (void *data) window->xwindow, &root, &child, &root_x, &root_y, &x, &y, &mask); - meta_error_trap_pop (window->display, TRUE); + meta_error_trap_pop (window->display); point_in_window = (window->frame && POINT_IN_RECT (root_x, root_y, window->frame->rect)) || @@ -2208,7 +2208,7 @@ event_callback (XEvent *event, window->frame->xwindow); meta_error_trap_push (display); meta_window_destroy_frame (window->frame->window); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } else { @@ -2377,7 +2377,7 @@ event_callback (XEvent *event, meta_error_trap_push (display); XConfigureWindow (display->xdisplay, event->xconfigurerequest.window, xwcm, &xwc); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } else { @@ -3148,7 +3148,7 @@ meta_spew_event (MetaDisplay *display, meta_error_trap_push (display); str = XGetAtomName (display->xdisplay, event->xproperty.atom); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); if (event->xproperty.state == PropertyNewValue) state = "PropertyNewValue"; @@ -3182,7 +3182,7 @@ meta_spew_event (MetaDisplay *display, meta_error_trap_push (display); str = XGetAtomName (display->xdisplay, event->xclient.message_type); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); extra = g_strdup_printf ("type: %s format: %d\n", str ? str : "(unknown atom)", event->xclient.format); @@ -3460,7 +3460,7 @@ meta_display_set_grab_op_cursor (MetaDisplay *display, meta_topic (META_DEBUG_WINDOW_OPS, "Changed pointer with XChangeActivePointerGrab()\n"); - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) { meta_topic (META_DEBUG_WINDOW_OPS, "Error trapped from XChangeActivePointerGrab()\n"); @@ -3493,7 +3493,7 @@ meta_display_set_grab_op_cursor (MetaDisplay *display, "XGrabPointer() failed time %u\n", timestamp); } - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); } #undef GRAB_MASK @@ -3669,7 +3669,7 @@ meta_display_begin_grab_op (MetaDisplay *display, XSyncCAEvents, &values); - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) display->grab_sync_request_alarm = None; meta_topic (META_DEBUG_RESIZING, @@ -3888,7 +3888,7 @@ meta_change_button_grab (MetaDisplay *display, { int result; - result = meta_error_trap_pop_with_return (display, FALSE); + result = meta_error_trap_pop_with_return (display); if (result != Success) meta_verbose ("Failed to %s button %d with mask 0x%x for window 0x%lx error code %d\n", @@ -3899,7 +3899,7 @@ meta_change_button_grab (MetaDisplay *display, ++ignored_mask; } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } void @@ -4083,7 +4083,7 @@ meta_display_update_active_window_hint (MetaDisplay *display) XA_WINDOW, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); tmp = tmp->next; } @@ -4363,7 +4363,7 @@ process_request_frame_extents (MetaDisplay *display, display->atom__NET_FRAME_EXTENTS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 4); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); meta_XFree (hints); } @@ -4841,11 +4841,11 @@ convert_property (MetaDisplay *display, (unsigned char *)icccm_version, 2); else { - meta_error_trap_pop_with_return (display, FALSE); + meta_error_trap_pop_with_return (display); return FALSE; } - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) return FALSE; /* Be sure the PropertyNotify has arrived so we @@ -4877,7 +4877,7 @@ process_selection_request (MetaDisplay *display, meta_error_trap_push (display); str = XGetAtomName (display->xdisplay, event->xselectionrequest.selection); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); meta_verbose ("Selection request with selection %s window 0x%lx not a WM_Sn selection we recognize\n", str ? str : "(bad atom)", event->xselectionrequest.owner); @@ -4911,11 +4911,11 @@ process_selection_request (MetaDisplay *display, display->atom_ATOM_PAIR, &type, &format, &num, &rest, &data) != Success) { - meta_error_trap_pop_with_return (display, TRUE); + meta_error_trap_pop_with_return (display); return; } - if (meta_error_trap_pop_with_return (display, TRUE) == Success) + if (meta_error_trap_pop_with_return (display) == Success) { /* FIXME: to be 100% correct, should deal with rest > 0, * but since we have 4 possible targets, we will hardly ever @@ -4938,7 +4938,7 @@ process_selection_request (MetaDisplay *display, event->xselectionrequest.property, display->atom_ATOM_PAIR, 32, PropModeReplace, data, num); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); meta_XFree (data); } } @@ -4994,7 +4994,7 @@ process_selection_clear (MetaDisplay *display, meta_error_trap_push (display); str = XGetAtomName (display->xdisplay, event->xselectionclear.selection); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); meta_verbose ("Selection clear with selection %s window 0x%lx not a WM_Sn selection we recognize\n", str ? str : "(bad atom)", event->xselectionclear.window); @@ -5366,7 +5366,7 @@ meta_display_set_input_focus_window (MetaDisplay *display, focus_frame ? window->frame->xwindow : window->xwindow, RevertToPointerRoot, timestamp); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); display->expected_focus_window = window; display->last_focus_time = timestamp; diff --git a/src/core/errors.c b/src/core/errors.c index 1f35e897b..f5a95d794 100644 --- a/src/core/errors.c +++ b/src/core/errors.c @@ -28,7 +28,6 @@ #include #include #include -#include /* Only for GTK_CHECK_VERSION */ /* In GTK+-3.0, the error trapping code was significantly rewritten. The new code * has some neat features (like knowing automatically if a sync is needed or not @@ -41,26 +40,6 @@ * use the GTK+ handling straight-up. * (See https://bugzilla.gnome.org/show_bug.cgi?id=630216 for restoring logging.) */ -#if GTK_CHECK_VERSION(2, 90, 0) -#define USE_GDK_ERROR_HANDLERS 1 -#endif - -#ifndef USE_GDK_ERROR_HANDLERS -static int x_error_handler (Display *display, - XErrorEvent *error); -static int x_io_error_handler (Display *display); -#endif - -void -meta_errors_init (void) -{ -#ifndef USE_GDK_ERROR_HANDLERS - XSetErrorHandler (x_error_handler); - XSetIOErrorHandler (x_io_error_handler); -#endif -} - -#ifdef USE_GDK_ERROR_HANDLERS void meta_error_trap_push (MetaDisplay *display) @@ -69,8 +48,7 @@ meta_error_trap_push (MetaDisplay *display) } void -meta_error_trap_pop (MetaDisplay *display, - gboolean last_request_was_roundtrip) +meta_error_trap_pop (MetaDisplay *display) { gdk_error_trap_pop_ignored (); } @@ -82,220 +60,7 @@ meta_error_trap_push_with_return (MetaDisplay *display) } int -meta_error_trap_pop_with_return (MetaDisplay *display, - gboolean last_request_was_roundtrip) +meta_error_trap_pop_with_return (MetaDisplay *display) { return gdk_error_trap_pop (); } - -#else /* !USE_GDK_ERROR_HANDLERS */ - -static void -meta_error_trap_push_internal (MetaDisplay *display, - gboolean need_sync) -{ - /* GDK resets the error handler on each push */ - int (* old_error_handler) (Display *, - XErrorEvent *); - - if (need_sync) - { - XSync (display->xdisplay, False); - } - - gdk_error_trap_push (); - - /* old_error_handler will just be equal to x_error_handler - * for nested traps - */ - old_error_handler = XSetErrorHandler (x_error_handler); - - /* Replace GDK handler, but save it so we can chain up */ - if (display->error_trap_handler == NULL) - { - g_assert (display->error_traps == 0); - display->error_trap_handler = old_error_handler; - g_assert (display->error_trap_handler != x_error_handler); - } - - display->error_traps += 1; - - meta_topic (META_DEBUG_ERRORS, "%d traps remain\n", display->error_traps); -} - -static int -meta_error_trap_pop_internal (MetaDisplay *display, - gboolean need_sync) -{ - int result; - - g_assert (display->error_traps > 0); - - if (need_sync) - { - XSync (display->xdisplay, False); - } - - result = gdk_error_trap_pop (); - - display->error_traps -= 1; - - if (display->error_traps == 0) - { - /* check that GDK put our handler back; this - * assumes that there are no pending GDK traps from GDK itself - */ - - int (* restored_error_handler) (Display *, - XErrorEvent *); - - restored_error_handler = XSetErrorHandler (x_error_handler); - - /* remove this */ - display->error_trap_handler = NULL; - } - - meta_topic (META_DEBUG_ERRORS, "%d traps\n", display->error_traps); - - return result; -} - -void -meta_error_trap_push (MetaDisplay *display) -{ - meta_error_trap_push_internal (display, FALSE); -} - -void -meta_error_trap_pop (MetaDisplay *display, - gboolean last_request_was_roundtrip) -{ - gboolean need_sync; - - /* we only have to sync when popping the outermost trap */ - need_sync = (display->error_traps == 1 && !last_request_was_roundtrip); - - if (need_sync) - meta_topic (META_DEBUG_SYNC, "Syncing on error_trap_pop, traps = %d, roundtrip = %d\n", - display->error_traps, last_request_was_roundtrip); - - display->error_trap_synced_at_last_pop = need_sync || last_request_was_roundtrip; - - meta_error_trap_pop_internal (display, need_sync); -} - -void -meta_error_trap_push_with_return (MetaDisplay *display) -{ - gboolean need_sync; - - /* We don't sync on push_with_return if there are no traps - * currently, because we assume that any errors were either covered - * by a previous pop, or were fatal. - * - * More generally, we don't sync if we were synchronized last time - * we popped. This is known to be the case if there are no traps, - * but we also keep a flag so we know whether it's the case otherwise. - */ - - if (!display->error_trap_synced_at_last_pop) - need_sync = TRUE; - else - need_sync = FALSE; - - if (need_sync) - meta_topic (META_DEBUG_SYNC, "Syncing on error_trap_push_with_return, traps = %d\n", - display->error_traps); - - meta_error_trap_push_internal (display, FALSE); -} - -int -meta_error_trap_pop_with_return (MetaDisplay *display, - gboolean last_request_was_roundtrip) -{ - if (!last_request_was_roundtrip) - meta_topic (META_DEBUG_SYNC, "Syncing on error_trap_pop_with_return, traps = %d, roundtrip = %d\n", - display->error_traps, last_request_was_roundtrip); - - display->error_trap_synced_at_last_pop = TRUE; - - return meta_error_trap_pop_internal (display, - !last_request_was_roundtrip); -} - -static int -x_error_handler (Display *xdisplay, - XErrorEvent *error) -{ - int retval; - gchar buf[64]; - MetaDisplay *display; - - XGetErrorText (xdisplay, error->error_code, buf, 63); - - display = meta_display_for_x_display (xdisplay); - - /* Display can be NULL here Xlib only has one global error handler; and - * there might be other displays open in the process. - */ - if (display && display->error_traps > 0) - { - /* we're in an error trap, chain to the trap handler - * saved from GDK - */ - meta_verbose ("X error: %s serial %ld error_code %d request_code %d minor_code %d)\n", - buf, - error->serial, - error->error_code, - error->request_code, - error->minor_code); - - g_assert (display->error_trap_handler != NULL); - g_assert (display->error_trap_handler != x_error_handler); - - retval = (* display->error_trap_handler) (xdisplay, error); - } - else - { - meta_bug ("Unexpected X error: %s serial %ld error_code %d request_code %d minor_code %d)\n", - buf, - error->serial, - error->error_code, - error->request_code, - error->minor_code); - - retval = 1; /* compiler warning */ - } - - return retval; -} - -static int -x_io_error_handler (Display *xdisplay) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - if (errno == EPIPE) - { - meta_warning (_("Lost connection to the display '%s';\n" - "most likely the X server was shut down or you killed/destroyed\n" - "the window manager.\n"), - display ? display->name : DisplayString (xdisplay)); - } - else - { - meta_warning (_("Fatal IO error %d (%s) on display '%s'.\n"), - errno, g_strerror (errno), - display ? display->name : DisplayString (xdisplay)); - } - - /* Xlib would force an exit anyhow */ - exit (1); - - return 0; -} - -#endif /* USE_GDK_ERROR_HANDLERS */ diff --git a/src/core/frame.c b/src/core/frame.c index a8d0b1f7d..074d2cfc1 100644 --- a/src/core/frame.c +++ b/src/core/frame.c @@ -153,7 +153,7 @@ meta_window_ensure_frame (MetaWindow *window) window->rect.x, window->rect.y); /* FIXME handle this error */ - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); /* stick frame to the window */ window->frame = frame; @@ -217,7 +217,7 @@ meta_window_destroy_frame (MetaWindow *window) */ window->frame->rect.x, window->frame->rect.y); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); meta_ui_destroy_frame_window (window->screen->ui, frame->xwindow); diff --git a/src/core/iconcache.c b/src/core/iconcache.c index 1b3690d99..18ec9d969 100644 --- a/src/core/iconcache.c +++ b/src/core/iconcache.c @@ -241,7 +241,7 @@ read_rgb_icon (MetaDisplay *display, 0, G_MAXLONG, False, XA_CARDINAL, &type, &format, &nitems, &bytes_after, &data); - err = meta_error_trap_pop_with_return (display, TRUE); + err = meta_error_trap_pop_with_return (display); if (err != Success || result != Success) @@ -406,7 +406,7 @@ try_pixmap_and_mask (MetaDisplay *display, w, h); } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); if (mask) { @@ -482,7 +482,7 @@ get_kwm_win_icon (MetaDisplay *display, &bytes_after, &data); icons = (Pixmap *)data; - err = meta_error_trap_pop_with_return (display, TRUE); + err = meta_error_trap_pop_with_return (display); if (err != Success || result != Success) return; diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 771274839..883c85366 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -470,7 +470,7 @@ regrab_key_bindings (MetaDisplay *display) tmp = tmp->next; } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); g_slist_free (windows); } @@ -700,7 +700,7 @@ meta_change_keygrab (MetaDisplay *display, { int result; - result = meta_error_trap_pop_with_return (display, FALSE); + result = meta_error_trap_pop_with_return (display); if (grab && result != Success) { @@ -716,7 +716,7 @@ meta_change_keygrab (MetaDisplay *display, ++ignored_mask; } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } static void @@ -758,7 +758,7 @@ grab_keys (MetaKeyBinding *bindings, ++i; } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } static void @@ -777,14 +777,14 @@ ungrab_all_keys (MetaDisplay *display, { int result; - result = meta_error_trap_pop_with_return (display, FALSE); + result = meta_error_trap_pop_with_return (display); if (result != Success) meta_topic (META_DEBUG_KEYBINDINGS, "Ungrabbing all keys on 0x%lx failed\n", xwindow); } else - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } void @@ -916,7 +916,7 @@ grab_keyboard (MetaDisplay *display, if (grab_status != GrabSuccess) { - meta_error_trap_pop_with_return (display, TRUE); + meta_error_trap_pop_with_return (display); meta_topic (META_DEBUG_KEYBINDINGS, "XGrabKeyboard() returned failure status %s time %u\n", grab_status_to_string (grab_status), @@ -925,7 +925,7 @@ grab_keyboard (MetaDisplay *display, } else { - result = meta_error_trap_pop_with_return (display, TRUE); + result = meta_error_trap_pop_with_return (display); if (result != Success) { meta_topic (META_DEBUG_KEYBINDINGS, @@ -948,7 +948,7 @@ ungrab_keyboard (MetaDisplay *display, guint32 timestamp) "Ungrabbing keyboard with timestamp %u\n", timestamp); XUngrabKeyboard (display->xdisplay, timestamp); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } gboolean @@ -2899,7 +2899,7 @@ handle_panel (MetaDisplay *display, StructureNotifyMask, (XEvent*) &ev); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } static void diff --git a/src/core/main.c b/src/core/main.c index 19e41d9b6..0a4d06d91 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -623,9 +623,6 @@ main (int argc, char **argv) g_option_context_free (ctx); - /* must be after UI init so we can override GDK handlers */ - meta_errors_init (); - /* Load prefs */ meta_prefs_init (); meta_prefs_add_listener (prefs_changed_callback, NULL); diff --git a/src/core/screen.c b/src/core/screen.c index 02a717313..44377bee3 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -601,7 +601,7 @@ meta_screen_new (MetaDisplay *display, attrs.event_mask = StructureNotifyMask; XChangeWindowAttributes (xdisplay, current_wm_sn_owner, CWEventMask, &attrs); - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) current_wm_sn_owner = None; /* don't wait for it to die later on */ } @@ -670,7 +670,7 @@ meta_screen_new (MetaDisplay *display, KeyPressMask | KeyReleaseMask | FocusChangeMask | StructureNotifyMask | ExposureMask | attr.your_event_mask); - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) { meta_warning (_("Screen %d on display \"%s\" already has a window manager\n"), number, display->name); @@ -856,7 +856,7 @@ meta_screen_free (MetaScreen *screen, meta_error_trap_push_with_return (screen->display); XSelectInput (screen->display->xdisplay, screen->xroot, 0); - if (meta_error_trap_pop_with_return (screen->display, FALSE) != Success) + if (meta_error_trap_pop_with_return (screen->display) != Success) meta_warning (_("Could not release screen %d on display \"%s\"\n"), screen->number, screen->display->name); @@ -913,7 +913,7 @@ list_windows (MetaScreen *screen) XGetWindowAttributes (screen->display->xdisplay, children[i], &info->attrs); - if (meta_error_trap_pop_with_return (screen->display, TRUE)) + if (meta_error_trap_pop_with_return (screen->display)) { meta_verbose ("Failed to get attributes for window 0x%lx\n", children[i]); @@ -1220,7 +1220,7 @@ set_number_of_spaces_hint (MetaScreen *screen, screen->display->atom__NET_NUMBER_OF_DESKTOPS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); } static void @@ -1241,7 +1241,7 @@ set_desktop_geometry_hint (MetaScreen *screen) screen->display->atom__NET_DESKTOP_GEOMETRY, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 2); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); } static void @@ -1265,7 +1265,7 @@ set_desktop_viewport_hint (MetaScreen *screen) screen->display->atom__NET_DESKTOP_VIEWPORT, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 2); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); } void @@ -1839,7 +1839,7 @@ meta_screen_get_mouse_window (MetaScreen *screen, &win_x_return, &win_y_return, &mask_return); - meta_error_trap_pop (screen->display, TRUE); + meta_error_trap_pop (screen->display); window = meta_stack_get_default_focus_window_at_point (screen->stack, screen->active_workspace, @@ -2242,7 +2242,7 @@ set_workspace_names (MetaScreen *screen) screen->display->atom_UTF8_STRING, 8, PropModeReplace, (unsigned char *)flattened->str, flattened->len); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); g_string_free (flattened, TRUE); } @@ -2346,7 +2346,7 @@ set_work_area_hint (MetaScreen *screen) XA_CARDINAL, 32, PropModeReplace, (guchar*) data, num_workspaces*4); g_free (data); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); g_signal_emit (screen, screen_signals[WORKAREAS_CHANGED], 0); } @@ -2721,7 +2721,7 @@ meta_screen_update_showing_desktop_hint (MetaScreen *screen) screen->display->atom__NET_SHOWING_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); } static void diff --git a/src/core/stack.c b/src/core/stack.c index 706e85b6d..1aecc372a 100644 --- a/src/core/stack.c +++ b/src/core/stack.c @@ -1026,7 +1026,7 @@ raise_window_relative_to_managed_windows (MetaScreen *screen, xwindow, CWSibling | CWStackMode, &changes); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); break; } @@ -1046,7 +1046,7 @@ raise_window_relative_to_managed_windows (MetaScreen *screen, XNextRequest (screen->display->xdisplay)); XLowerWindow (screen->display->xdisplay, xwindow); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); } } @@ -1267,7 +1267,7 @@ stack_sync_to_server (MetaStack *stack) all_hidden->len); g_array_free (all_hidden, TRUE); - meta_error_trap_pop (stack->screen->display, FALSE); + meta_error_trap_pop (stack->screen->display); /* on error, a window was destroyed; it should eventually * get removed from the stacking list when we unmanage it * and we'll fix stacking at that time. diff --git a/src/core/window-props.c b/src/core/window-props.c index e60121515..ce578ff88 100644 --- a/src/core/window-props.c +++ b/src/core/window-props.c @@ -442,7 +442,7 @@ set_title_text (MetaWindow *window, XDeleteProperty (window->display->xdisplay, window->xwindow, atom); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } return modified; diff --git a/src/core/window.c b/src/core/window.c index 26942b635..8fd342cae 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -484,11 +484,11 @@ meta_window_new (MetaDisplay *display, if (XGetWindowAttributes (display->xdisplay,xwindow, &attrs)) { - if(meta_error_trap_pop_with_return (display, TRUE) != Success) + if(meta_error_trap_pop_with_return (display) != Success) { meta_verbose ("Failed to get attributes for window 0x%lx\n", xwindow); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); meta_display_ungrab (display); return NULL; } @@ -499,16 +499,16 @@ meta_window_new (MetaDisplay *display, } else { - meta_error_trap_pop_with_return (display, TRUE); + meta_error_trap_pop_with_return (display); meta_verbose ("Failed to get attributes for window 0x%lx\n", xwindow); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); meta_display_ungrab (display); return NULL; } - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); meta_display_ungrab (display); return window; @@ -607,7 +607,7 @@ meta_window_new_with_attrs (MetaDisplay *display, (state == IconicState || state == NormalState))) { meta_verbose ("Deciding not to manage unmapped or unviewable window 0x%lx\n", xwindow); - meta_error_trap_pop (display, TRUE); + meta_error_trap_pop (display); meta_display_ungrab (display); return NULL; } @@ -629,7 +629,7 @@ meta_window_new_with_attrs (MetaDisplay *display, */ meta_error_trap_push_with_return (display); XAddToSaveSet (display->xdisplay, xwindow); - meta_error_trap_pop_with_return (display, FALSE); + meta_error_trap_pop_with_return (display); event_mask = PropertyChangeMask | EnterWindowMask | LeaveWindowMask | @@ -685,11 +685,11 @@ meta_window_new_with_attrs (MetaDisplay *display, &set_attrs); } - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) { meta_verbose ("Window 0x%lx disappeared just as we tried to manage it\n", xwindow); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); meta_display_ungrab (display); return NULL; } @@ -1162,7 +1162,7 @@ meta_window_new_with_attrs (MetaDisplay *display, !window->initially_iconic) unminimize_window_and_all_transient_parents (window); - meta_error_trap_pop (display, FALSE); /* pop the XSync()-reducing trap */ + meta_error_trap_pop (display); /* pop the XSync()-reducing trap */ meta_display_ungrab (display); window->constructing = FALSE; @@ -1482,7 +1482,7 @@ meta_window_unmanage (MetaWindow *window, window->xwindow, window->display->atom__NET_WM_FULLSCREEN_MONITORS); set_wm_state (window, WithdrawnState); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } else { @@ -1493,7 +1493,7 @@ meta_window_unmanage (MetaWindow *window, { meta_error_trap_push (window->display); set_wm_state (window, NormalState); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } /* And we need to be sure the window is mapped so other WMs @@ -1502,7 +1502,7 @@ meta_window_unmanage (MetaWindow *window, meta_error_trap_push (window->display); XMapWindow (window->display->xdisplay, window->xwindow); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } meta_window_ungrab_keys (window); @@ -1550,7 +1550,7 @@ meta_window_unmanage (MetaWindow *window, XShapeSelectInput (window->display->xdisplay, window->xwindow, NoEventMask); #endif - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); g_signal_emit (window, window_signals[UNMANAGED], 0); @@ -1577,7 +1577,7 @@ set_wm_state (MetaWindow *window, window->display->atom_WM_STATE, window->display->atom_WM_STATE, 32, PropModeReplace, (guchar*) data, 2); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } static void @@ -1655,7 +1655,7 @@ set_net_wm_state (MetaWindow *window) window->display->atom__NET_WM_STATE, XA_ATOM, 32, PropModeReplace, (guchar*) data, i); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); if (window->fullscreen) { @@ -1671,7 +1671,7 @@ set_net_wm_state (MetaWindow *window) window->display->atom__NET_WM_FULLSCREEN_MONITORS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 4); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } } @@ -2414,7 +2414,7 @@ map_client_window (MetaWindow *window) window->mapped = TRUE; meta_error_trap_push (window->display); XMapWindow (window->display->xdisplay, window->xwindow); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); return TRUE; } @@ -2438,7 +2438,7 @@ unmap_client_window (MetaWindow *window, window->unmaps_pending += 1; meta_error_trap_push (window->display); XUnmapWindow (window->display->xdisplay, window->xwindow); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); return TRUE; } @@ -4323,7 +4323,7 @@ meta_window_move_resize_internal (MetaWindow *window, mask, &values); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } if (!configure_frame_first && window->frame) @@ -5026,7 +5026,7 @@ update_net_frame_extents (MetaWindow *window) window->display->atom__NET_FRAME_EXTENTS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 4); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } void @@ -5053,7 +5053,7 @@ meta_window_set_current_workspace_hint (MetaWindow *window) window->display->atom__NET_WM_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } static gboolean @@ -5178,7 +5178,7 @@ meta_window_send_icccm_message (MetaWindow *window, meta_error_trap_push (window->display); XSendEvent (window->display->xdisplay, window->xwindow, False, 0, (XEvent*) &ev); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } void @@ -5583,12 +5583,12 @@ meta_window_client_message (MetaWindow *window, meta_error_trap_push_with_return (display); str1 = XGetAtomName (display->xdisplay, first); - if (meta_error_trap_pop_with_return (display, TRUE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) str1 = NULL; meta_error_trap_push_with_return (display); str2 = XGetAtomName (display->xdisplay, second); - if (meta_error_trap_pop_with_return (display, TRUE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) str2 = NULL; meta_verbose ("Request to change _NET_WM_STATE action %lu atom1: %s atom2: %s\n", @@ -5876,7 +5876,7 @@ meta_window_client_message (MetaWindow *window, &query_root_x, &query_root_y, &x, &y, &mask); - meta_error_trap_pop (window->display, TRUE); + meta_error_trap_pop (window->display); if (mask & Button1Mask) button = 1; @@ -6112,7 +6112,7 @@ meta_window_notify_focus (MetaWindow *window, meta_error_trap_push (window->display); XInstallColormap (window->display->xdisplay, window->colormap); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); /* move into FOCUSED_WINDOW layer */ meta_window_update_layer (window); @@ -6175,7 +6175,7 @@ meta_window_notify_focus (MetaWindow *window, meta_error_trap_push (window->display); XUninstallColormap (window->display->xdisplay, window->colormap); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); /* move out of FOCUSED_WINDOW layer */ meta_window_update_layer (window); @@ -6266,7 +6266,7 @@ send_configure_notify (MetaWindow *window) XSendEvent (window->display->xdisplay, window->xwindow, False, StructureNotifyMask, &event); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } /* FIXME: @rect should be marked (out), but gjs doesn't currently support @@ -6502,7 +6502,7 @@ meta_window_update_net_wm_type (MetaWindow *window) { meta_error_trap_push (window->display); str = XGetAtomName (window->display->xdisplay, window->type_atom); - meta_error_trap_pop (window->display, TRUE); + meta_error_trap_pop (window->display); } meta_verbose ("Window %s type atom %s\n", window->desc, @@ -6863,7 +6863,7 @@ recalc_window_type (MetaWindow *window) meta_error_trap_push (window->display); atom_name = XGetAtomName (window->display->xdisplay, window->type_atom); - meta_error_trap_pop (window->display, TRUE); + meta_error_trap_pop (window->display); meta_warning ("Unrecognized type atom [%s] set for %s \n", atom_name ? atom_name : "unknown", @@ -7021,7 +7021,7 @@ set_allowed_actions_hint (MetaWindow *window) window->display->atom__NET_WM_ALLOWED_ACTIONS, XA_ATOM, 32, PropModeReplace, (guchar*) data, i); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); #undef MAX_N_ACTIONS } @@ -8493,7 +8493,7 @@ meta_window_set_gravity (MetaWindow *window, CWWinGravity, &attrs); - meta_error_trap_pop (window->display, FALSE); + meta_error_trap_pop (window->display); } static void @@ -8937,7 +8937,7 @@ warp_grab_pointer (MetaWindow *window, 0, 0, 0, 0, *x, *y); - if (meta_error_trap_pop_with_return (display, FALSE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) { meta_verbose ("Failed to warp pointer for window %s\n", window->desc); diff --git a/src/core/workspace.c b/src/core/workspace.c index 8ec9c76e0..67a4d2354 100644 --- a/src/core/workspace.c +++ b/src/core/workspace.c @@ -765,7 +765,7 @@ set_active_space_hint (MetaScreen *screen) screen->display->atom__NET_CURRENT_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (screen->display, FALSE); + meta_error_trap_pop (screen->display); } void diff --git a/src/core/xprops.c b/src/core/xprops.c index 332dec055..306f0f1d5 100644 --- a/src/core/xprops.c +++ b/src/core/xprops.c @@ -126,7 +126,7 @@ validate_or_free_results (GetPropertyResults *results, type_name = XGetAtomName (results->display->xdisplay, results->type); expected_name = XGetAtomName (results->display->xdisplay, expected_type); prop_name = XGetAtomName (results->display->xdisplay, results->xatom); - meta_error_trap_pop (results->display, TRUE); + meta_error_trap_pop (results->display); w = meta_display_lookup_x_window (results->display, results->xwindow); @@ -204,11 +204,11 @@ get_property (MetaDisplay *display, { if (results->prop) XFree (results->prop); - meta_error_trap_pop_with_return (display, TRUE); + meta_error_trap_pop_with_return (display); return FALSE; } - if (meta_error_trap_pop_with_return (display, TRUE) != Success) + if (meta_error_trap_pop_with_return (display) != Success) { if (results->prop) XFree (results->prop); @@ -490,7 +490,7 @@ utf8_list_from_results (GetPropertyResults *results, meta_error_trap_push (results->display); name = XGetAtomName (results->display->xdisplay, results->xatom); - meta_error_trap_pop (results->display, TRUE); + meta_error_trap_pop (results->display); meta_warning (_("Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"), name, results->xwindow, i); meta_XFree (name); @@ -547,7 +547,7 @@ meta_prop_set_utf8_string_hint (MetaDisplay *display, xwindow, atom, display->atom_UTF8_STRING, 8, PropModeReplace, (guchar*) val, strlen (val)); - meta_error_trap_pop (display, FALSE); + meta_error_trap_pop (display); } static gboolean diff --git a/src/gdk-compat.h b/src/gdk-compat.h deleted file mode 100644 index 5dee8bb6d..000000000 --- a/src/gdk-compat.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef __GDK_COMPAT_H__ -#define __GDK_COMPAT_H__ - -#include -#include - -/* Provide a compatibility layer for accessor function introduced - * in GTK+ 2.22 which we need to build without deprecated GDK symbols. - * That way it is still possible to build with GTK+ 2.18 when not - * using GDK_DISABLE_DEPRECATED. - */ - -#if !GTK_CHECK_VERSION (2, 21, 1) - -#define gdk_visual_get_depth(v) GDK_VISUAL(v)->depth - -#endif /* GTK_CHECK_VERSION (2, 21, 1) */ - -#if !GTK_CHECK_VERSION (2, 90, 8) - -#define gdk_window_get_screen gdk_drawable_get_screen -#define gdk_pixbuf_get_from_window(window, src_x, src_y, width, height) \ - gdk_pixbuf_get_from_drawable(NULL, window, NULL, src_x, src_y, 0, 0, width, height) - -static inline int -gdk_window_get_width (GdkWindow *window) -{ - int width; - - gdk_drawable_get_size (window, &width, NULL); - - return width; -} - -static inline int -gdk_window_get_height (GdkWindow *window) -{ - int height; - - gdk_drawable_get_size (window, NULL, &height); - - return height; -} - - -static inline gboolean -gdk_cairo_get_clip_rectangle (cairo_t *cr, - GdkRectangle *rect) -{ - double x1, y1, x2, y2; - gboolean clip_exists; - - cairo_clip_extents (cr, &x1, &y1, &x2, &y2); - - clip_exists = x1 < x2 && y1 < y2; - - if (rect) - { - x1 = floor (x1); - y1 = floor (y1); - x2 = ceil (x2); - y2 = ceil (y2); - - rect->x = CLAMP (x1, G_MININT, G_MAXINT); - rect->y = CLAMP (y1, G_MININT, G_MAXINT); - rect->width = CLAMP (x2 - x1, G_MININT, G_MAXINT); - rect->height = CLAMP (y2 - y1, G_MININT, G_MAXINT); - } - - return clip_exists; -} - -#endif /* GTK_CHECK_VERSION (2, 90, 8) */ - -/* Compatibility with old GDK key symbols */ -#ifndef GDK_KEY_Escape -#define GDK_KEY_Escape GDK_Escape -#endif /* GDK_KEY_Escape */ - -#endif /* __GDK_COMPAT_H__ */ diff --git a/src/gdk2-drawing-utils.c b/src/gdk2-drawing-utils.c deleted file mode 100644 index f8be2b557..000000000 --- a/src/gdk2-drawing-utils.c +++ /dev/null @@ -1,177 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ - -/* - * Copyright (C) 2010 Red Hat Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. - */ - -#include - -#include "gdk2-drawing-utils.h" - -#include - -#include "gdk-compat.h" - -#ifndef USE_GTK3 - -static const cairo_user_data_key_t context_key; - -cairo_t * -meta_cairo_create (GdkDrawable *drawable) -{ - cairo_t *cr; - - cr = gdk_cairo_create (drawable); - cairo_set_user_data (cr, &context_key, drawable, NULL); - - return cr; -} - -static GdkWindow * -extract_window (cairo_t *cr, - int *dx, - int *dy, - GdkRectangle *clip_area) -{ - GdkWindow *window = cairo_get_user_data (cr, &context_key); - cairo_matrix_t matrix; - - g_assert (dx != NULL); - g_assert (dy != NULL); - g_assert (clip_area != NULL); - - /* lots of stuff that mustn't happen because we can't cope with it. */ - if (window == NULL) - { - g_error ("Could not get the GdkWindow from the cairo context passed to\n" - "theme drawing functions. A GdkWindow must be set on all cairo\n" - "context passed to theme drawing functions when using GTK2.\n" - "Please use meta_cairo_create() to create the Cairo context.\n"); - } - cairo_get_matrix (cr, &matrix); - if (matrix.xx != 1.0 || matrix.yy != 1.0 || - matrix.xy != 0.0 || matrix.yx != 0.0 || - floor (matrix.x0) != matrix.x0 || - floor (matrix.y0) != matrix.y0) - { - g_error ("GTK2 drawing requires that the matrix set on the cairo context\n" - "is an integer translation, however that is not the case.\n"); - } - - gdk_cairo_get_clip_rectangle (cr, clip_area); - clip_area->x += matrix.x0; - clip_area->y += matrix.y0; - - *dx = matrix.x0; - *dy = matrix.y0; - - return window; -} - -void -meta_paint_vline (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkWidget *widget, - const gchar *detail, - gint y1_, - gint y2_, - gint x) -{ - int dx, dy; - GdkWindow *window; - GdkRectangle area; - - window = extract_window (cr, &dx, &dy, &area); - - gtk_paint_vline (style, window, state_type, &area, - widget, detail, y1_ + dy, y2_ + dy, x + dx); -} - -void -meta_paint_arrow (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkShadowType shadow_type, - GtkWidget *widget, - const gchar *detail, - GtkArrowType arrow_type, - gboolean fill, - gint x, - gint y, - gint width, - gint height) -{ - int dx, dy; - GdkWindow *window; - GdkRectangle area; - - window = extract_window (cr, &dx, &dy, &area); - - gtk_paint_arrow (style, window, state_type, shadow_type, - &area, widget, detail, arrow_type, - fill, x + dx, y + dy, width, height); -} - -void -meta_paint_box (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkShadowType shadow_type, - GtkWidget *widget, - const gchar *detail, - gint x, - gint y, - gint width, - gint height) -{ - int dx, dy; - GdkWindow *window; - GdkRectangle area; - - window = extract_window (cr, &dx, &dy, &area); - - gtk_paint_box (style, window, state_type, shadow_type, - &area, widget, detail, - x + dx, y + dy, width, height); -} - -void -meta_paint_flat_box (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkShadowType shadow_type, - GtkWidget *widget, - const gchar *detail, - gint x, - gint y, - gint width, - gint height) -{ - int dx, dy; - GdkWindow *window; - GdkRectangle area; - - window = extract_window (cr, &dx, &dy, &area); - - gtk_paint_flat_box (style, window, state_type, shadow_type, - &area, widget, detail, - x + dx, y + dy, width, height); -} - -#endif /* USE_GTK3 */ diff --git a/src/gdk2-drawing-utils.h b/src/gdk2-drawing-utils.h deleted file mode 100644 index 3d6bd34c2..000000000 --- a/src/gdk2-drawing-utils.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ - -/* - * Copyright (C) 2010 Red Hat Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. - */ - -#ifndef __GTK3_COMPAT_H__ -#define __GTK3_COMPAT_H__ - -#include - -#if GTK_CHECK_VERSION (2, 90, 8) - -#define USE_GTK3 1 - -#define MetaPixmap cairo_surface_t - -#define meta_pixmap_new(window, w, h) gdk_window_create_similar_surface (window, CAIRO_CONTENT_COLOR, w, h) -#define meta_pixmap_free(pixmap) cairo_surface_destroy (pixmap) -#define meta_pixmap_cairo_create(pixmap) cairo_create (pixmap) -#define meta_cairo_set_source_pixmap(cr, pixmap, x, y) cairo_set_source_surface (cr, pixmap, x, y) - -#define meta_paint_vline gtk_paint_vline -#define meta_paint_box gtk_paint_box -#define meta_paint_arrow gtk_paint_arrow -#define meta_paint_flat_box gtk_paint_flat_box - -#else /* GTK_VERSION < 2.90.8 */ - -#undef USE_GTK3 - -#define MetaPixmap GdkPixmap - -#define meta_pixmap_new(window, w, h) gdk_pixmap_new (window, w, h, -1) -#define meta_pixmap_free(pixmap) g_object_unref (pixmap) -#define meta_pixmap_cairo_create(pixmap) meta_cairo_create (pixmap) -#define meta_cairo_set_source_pixmap(cr, pixmap, x, y) gdk_cairo_set_source_pixmap (cr, pixmap, x, y) - -/* This function only exists for GTK2 code. */ -cairo_t * meta_cairo_create (GdkDrawable *drawable); - -void meta_paint_vline (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkWidget *widget, - const gchar *detail, - gint y1_, - gint y2_, - gint x); -void meta_paint_arrow (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkShadowType shadow_type, - GtkWidget *widget, - const gchar *detail, - GtkArrowType arrow_type, - gboolean fill, - gint x, - gint y, - gint width, - gint height); -void meta_paint_box (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkShadowType shadow_type, - GtkWidget *widget, - const gchar *detail, - gint x, - gint y, - gint width, - gint height); -void meta_paint_flat_box (GtkStyle *style, - cairo_t *cr, - GtkStateType state_type, - GtkShadowType shadow_type, - GtkWidget *widget, - const gchar *detail, - gint x, - gint y, - gint width, - gint height); - -#endif /* GTK_VERSION < 2.90.8 */ - -#endif /* __GTK3_COMPAT_H__ */ diff --git a/src/gtk-compat.h b/src/gtk-compat.h deleted file mode 100644 index 5e029be4f..000000000 --- a/src/gtk-compat.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __GTK_COMPAT_H__ -#define __GTK_COMPAT_H__ - -#include - -/* Provide a compatibility layer for accessor function introduces - * in GTK+ 2.20 which we need to build with GSEAL_ENABLE. - * That way it is still possible to build with GTK+ 2.18 when not - * using GSEAL_ENABLE - */ - -#if !GTK_CHECK_VERSION (2, 20, 0) - -#define gtk_widget_get_realized(w) GTK_WIDGET_REALIZED (w) -#define gtk_widget_get_requisition(w,r) (*r = GTK_WIDGET (w)->requisition) -#define gtk_widget_set_mapped(w,m) \ - G_STMT_START { \ - if (m) \ - GTK_WIDGET_SET_FLAGS (w, GTK_MAPPED); \ - else \ - GTK_WIDGET_UNSET_FLAGS (w, GTK_MAPPED); \ - } G_STMT_END - -#endif /* GTK_CHECK_VERSION */ - -#endif /* __GTK_COMPAT_H__ */ diff --git a/src/include/errors.h b/src/include/errors.h index f15f26dfe..6aa57ec8b 100644 --- a/src/include/errors.h +++ b/src/include/errors.h @@ -29,16 +29,12 @@ #include "util.h" #include "display.h" -void meta_errors_init (void); - void meta_error_trap_push (MetaDisplay *display); -void meta_error_trap_pop (MetaDisplay *display, - gboolean last_request_was_roundtrip); +void meta_error_trap_pop (MetaDisplay *display); void meta_error_trap_push_with_return (MetaDisplay *display); /* returns X error code, or 0 for no error */ -int meta_error_trap_pop_with_return (MetaDisplay *display, - gboolean last_request_was_roundtrip); +int meta_error_trap_pop_with_return (MetaDisplay *display); #endif diff --git a/src/libmutter-private.pc.in b/src/libmutter-private.pc.in index 117a34be6..3b986dc59 100644 --- a/src/libmutter-private.pc.in +++ b/src/libmutter-private.pc.in @@ -6,7 +6,7 @@ libgnome_serverdir=@libexecdir@ Name: libmutter-private Description: Mutter internals shared -Requires: gtk+-@GTK_API_VERSION@ +Requires: gtk+-3.0 Version: @VERSION@ Libs: -L${libdir} -lmutter-private Cflags: -I${includedir}/mutter diff --git a/src/tools/mutter-mag.c b/src/tools/mutter-mag.c index a271145ed..3394d0f56 100644 --- a/src/tools/mutter-mag.c +++ b/src/tools/mutter-mag.c @@ -29,8 +29,6 @@ #include #include -#include "gdk-compat.h" - static GtkWidget *grab_widget = NULL; static GtkWidget *display_window = NULL; static int last_grab_x = 0; diff --git a/src/tools/mutter-window-demo.c b/src/tools/mutter-window-demo.c index aa91f058a..5e8c5cab3 100644 --- a/src/tools/mutter-window-demo.c +++ b/src/tools/mutter-window-demo.c @@ -24,8 +24,6 @@ #include #include -#include "gtk-compat.h" - static GtkWidget* do_appwindow (void); static gboolean aspect_on; diff --git a/src/ui/fixedtip.c b/src/ui/fixedtip.c index 0afc8c6a8..a9a14fc47 100644 --- a/src/ui/fixedtip.c +++ b/src/ui/fixedtip.c @@ -25,8 +25,6 @@ #include "fixedtip.h" #include "ui.h" -#include "gdk2-drawing-utils.h" - /** * The floating rectangle. This is a GtkWindow, and it contains * the "label" widget, below. @@ -52,7 +50,6 @@ static int screen_right_edge = 0; */ static int screen_bottom_edge = 0; -#ifdef USE_GTK3 static gboolean draw_handler (GtkWidget *tooltips, cairo_t *cr, @@ -68,21 +65,6 @@ draw_handler (GtkWidget *tooltips, return FALSE; } -#else /* !USE_GTK3 */ -static gint -expose_handler (GtkWidget *tooltips, - GdkEventExpose *event, - gpointer user_data) -{ - gtk_paint_flat_box (gtk_widget_get_style (tip), - gtk_widget_get_window (tip), - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - NULL, tip, "tooltip", - 0, 0, -1, -1); - - return FALSE; -} -#endif /* !USE_GTK3 */ void meta_fixed_tip_show (Display *xdisplay, int screen_number, @@ -116,13 +98,8 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number, gtk_widget_set_name (tip, "gtk-tooltips"); gtk_container_set_border_width (GTK_CONTAINER (tip), 4); -#ifdef USE_GTK3 g_signal_connect (tip, "draw", G_CALLBACK (draw_handler), NULL); -#else - g_signal_connect (tip, "expose_event", - G_CALLBACK (expose_handler), NULL); -#endif label = gtk_label_new (NULL); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); diff --git a/src/ui/frames.c b/src/ui/frames.c index 156bcc941..b98744b26 100644 --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -35,10 +35,6 @@ #include "prefs.h" #include "ui.h" -#include "gdk2-drawing-utils.h" -#include "gtk-compat.h" -#include "gdk-compat.h" - #include #ifdef HAVE_SHAPE @@ -47,11 +43,7 @@ #define DEFAULT_INNER_BUTTON_BORDER 3 -#ifdef USE_GTK3 static void meta_frames_destroy (GtkWidget *object); -#else -static void meta_frames_destroy (GtkObject *object); -#endif static void meta_frames_finalize (GObject *object); static void meta_frames_style_set (GtkWidget *widget, GtkStyle *prev_style); @@ -69,13 +61,8 @@ static gboolean meta_frames_motion_notify_event (GtkWidget *widget, GdkEventMotion *event); static gboolean meta_frames_destroy_event (GtkWidget *widget, GdkEventAny *event); -#ifdef USE_GTK3 static gboolean meta_frames_draw (GtkWidget *widget, cairo_t *cr); -#else -static gboolean meta_frames_expose_event (GtkWidget *widget, - GdkEventExpose *event); -#endif static gboolean meta_frames_enter_notify_event (GtkWidget *widget, GdkEventCrossing *event); static gboolean meta_frames_leave_notify_event (GtkWidget *widget, @@ -148,22 +135,14 @@ meta_frames_class_init (MetaFramesClass *class) gobject_class->constructor = meta_frames_constructor; gobject_class->finalize = meta_frames_finalize; -#ifdef USE_GTK3 widget_class->destroy = meta_frames_destroy; -#else - GTK_OBJECT_CLASS (class)->destroy = meta_frames_destroy; -#endif widget_class->style_set = meta_frames_style_set; widget_class->map = meta_frames_map; widget_class->unmap = meta_frames_unmap; -#ifdef USE_GTK3 widget_class->draw = meta_frames_draw; -#else - widget_class->expose_event = meta_frames_expose_event; -#endif widget_class->destroy_event = meta_frames_destroy_event; widget_class->button_press_event = meta_frames_button_press_event; widget_class->button_release_event = meta_frames_button_release_event; @@ -238,13 +217,8 @@ listify_func (gpointer key, gpointer value, gpointer data) *listp = g_slist_prepend (*listp, value); } -#ifdef USE_GTK3 static void meta_frames_destroy (GtkWidget *object) -#else -static void -meta_frames_destroy (GtkObject *object) -#endif { GSList *winlist; GSList *tmp; @@ -268,11 +242,7 @@ meta_frames_destroy (GtkObject *object) } g_slist_free (winlist); -#ifdef USE_GTK3 GTK_WIDGET_CLASS (meta_frames_parent_class)->destroy (object); -#else - GTK_OBJECT_CLASS (meta_frames_parent_class)->destroy (object); -#endif } static void @@ -300,7 +270,7 @@ meta_frames_finalize (GObject *object) typedef struct { cairo_rectangle_int_t rect; - MetaPixmap *pixmap; + cairo_surface_t *pixmap; } CachedFramePiece; typedef struct @@ -337,7 +307,7 @@ invalidate_cache (MetaFrames *frames, for (i = 0; i < 4; i++) if (pixels->piece[i].pixmap) - meta_pixmap_free (pixels->piece[i].pixmap); + cairo_surface_destroy (pixels->piece[i].pixmap); g_free (pixels); g_hash_table_remove (frames->cache, frame); @@ -2036,53 +2006,6 @@ meta_frames_destroy_event (GtkWidget *widget, return TRUE; } -#if !GTK_CHECK_VERSION(2,21,6) -/* Copied from GDK */ -static cairo_surface_t * -_gdk_drawable_ref_cairo_surface (GdkDrawable *drawable) -{ - g_return_val_if_fail (GDK_IS_DRAWABLE (drawable), NULL); - - return GDK_DRAWABLE_GET_CLASS (drawable)->ref_cairo_surface (drawable); -} - -static cairo_pattern_t * -gdk_window_get_background_pattern (GdkWindow *window) -{ - GdkWindowObject *private = (GdkWindowObject *) window; - cairo_pattern_t *pattern; - - g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); - - if (private->bg_pixmap == GDK_PARENT_RELATIVE_BG) - pattern = NULL; - else if (private->bg_pixmap != GDK_NO_BG && - private->bg_pixmap != NULL) - { - static cairo_user_data_key_t key; - cairo_surface_t *surface; - - surface = _gdk_drawable_ref_cairo_surface (private->bg_pixmap); - pattern = cairo_pattern_create_for_surface (surface); - cairo_surface_destroy (surface); - - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_pattern_set_user_data (pattern, - &key, - g_object_ref (private->bg_pixmap), - g_object_unref); - } - else - { - pattern = - cairo_pattern_create_rgb (private->bg_color.red / 65535., - private->bg_color.green / 65535., - private->bg_color.blue / 65535.); - } - - return pattern; -} -#endif static void setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset) @@ -2109,22 +2032,23 @@ setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset) /* Returns a pixmap with a piece of the windows frame painted on it. */ -static MetaPixmap * +static cairo_surface_t * generate_pixmap (MetaFrames *frames, MetaUIFrame *frame, cairo_rectangle_int_t *rect) { - MetaPixmap *result; + cairo_surface_t *result; cairo_t *cr; /* do not create a pixmap for nonexisting areas */ if (rect->width <= 0 || rect->height <= 0) return NULL; - result = meta_pixmap_new (frame->window, - rect->width, rect->height); + result = gdk_window_create_similar_surface (frame->window, + CAIRO_CONTENT_COLOR, + rect->width, rect->height); - cr = meta_pixmap_cairo_create (result); + cr = cairo_create (result); cairo_translate (cr, -rect->x, -rect->y); setup_bg_cr (cr, frame->window, 0, 0); @@ -2295,8 +2219,8 @@ cached_pixels_draw (CachedPixels *pixels, if (piece->pixmap) { - meta_cairo_set_source_pixmap (cr, piece->pixmap, - piece->rect.x, piece->rect.y); + cairo_set_source_surface (cr, piece->pixmap, + piece->rect.x, piece->rect.y); cairo_paint (cr); region_piece = cairo_region_create_rectangle (&piece->rect); @@ -2306,7 +2230,6 @@ cached_pixels_draw (CachedPixels *pixels, } } -#ifdef USE_GTK3 static gboolean meta_frames_draw (GtkWidget *widget, cairo_t *cr) @@ -2373,75 +2296,6 @@ meta_frames_draw (GtkWidget *widget, return TRUE; } -#else /* !USE_GTK3 */ -static gboolean -meta_frames_expose_event (GtkWidget *widget, - GdkEventExpose *event) -{ - MetaUIFrame *frame; - MetaFrames *frames; - CachedPixels *pixels; - cairo_region_t *region; - int i, n_areas; - GdkRectangle *event_rectangles; - int n_event_rectangles; - cairo_t *cr; - - frames = META_FRAMES (widget); - - frame = meta_frames_lookup_window (frames, GDK_WINDOW_XID (event->window)); - if (frame == NULL) - return FALSE; - - if (frames->expose_delay_count > 0) - { - /* Redraw this entire frame later */ - frame->expose_delayed = TRUE; - return TRUE; - } - - populate_cache (frames, frame); - - /* Count on GdkRectangle and cairo_rectangle_int_t being identical */ - gdk_region_get_rectangles (event->region, &event_rectangles, &n_event_rectangles); - region = cairo_region_create_rectangles ((cairo_rectangle_int_t *)event_rectangles, - n_event_rectangles); - g_free (event_rectangles); - - pixels = get_cache (frames, frame); - - cr = gdk_cairo_create (event->window); - cached_pixels_draw (pixels, cr, region); - cairo_destroy (cr); - - clip_to_screen (region, frame); - subtract_client_area (region, frame); - - n_areas = cairo_region_num_rectangles (region); - - for (i = 0; i < n_areas; i++) - { - GdkRectangle area; - - /* Count on GdkRectangle and cairo_rectangle_int_t being identical */ - cairo_region_get_rectangle (region, i, (cairo_rectangle_int_t *)&area); - - gdk_window_begin_paint_rect (event->window, &area); - cr = gdk_cairo_create (event->window); - /* no need to clip, begin_paint_region ensures the pixmap - * is only as big as the rect we use. */ - - meta_frames_paint (frames, frame, cr); - - cairo_destroy (cr); - gdk_window_end_paint (event->window); - } - - cairo_region_destroy (region); - - return TRUE; -} -#endif /* !USE_GTK3 */ static void meta_frames_paint (MetaFrames *frames, diff --git a/src/ui/menu.c b/src/ui/menu.c index d3bfd358d..02f14d862 100644 --- a/src/ui/menu.c +++ b/src/ui/menu.c @@ -33,8 +33,6 @@ #include "metaaccellabel.h" #include "ui.h" -#include "gdk-compat.h" - typedef struct _MenuItem MenuItem; typedef struct _MenuData MenuData; diff --git a/src/ui/metaaccellabel.c b/src/ui/metaaccellabel.c index 28ef80e64..6883c71ee 100644 --- a/src/ui/metaaccellabel.c +++ b/src/ui/metaaccellabel.c @@ -37,24 +37,12 @@ #include #include "util.h" -#include "gtk-compat.h" -#include "gdk2-drawing-utils.h" - -#ifdef USE_GTK3 static void meta_accel_label_destroy (GtkWidget *object); -#else -static void meta_accel_label_destroy (GtkObject *object); -#endif static void meta_accel_label_finalize (GObject *object); static void meta_accel_label_size_request (GtkWidget *widget, GtkRequisition *requisition); -#ifdef USE_GTK3 static gboolean meta_accel_label_draw (GtkWidget *widget, cairo_t *cr); -#else -static gboolean meta_accel_label_expose_event (GtkWidget *widget, - GdkEventExpose *event); -#endif static void meta_accel_label_update (MetaAccelLabel *accel_label); static int meta_accel_label_get_accel_width (MetaAccelLabel *accel_label); @@ -69,18 +57,10 @@ meta_accel_label_class_init (MetaAccelLabelClass *class) gobject_class->finalize = meta_accel_label_finalize; -#ifdef USE_GTK3 widget_class->destroy = meta_accel_label_destroy; -#else - GTK_OBJECT_CLASS (class)->destroy = meta_accel_label_destroy; -#endif widget_class->size_request = meta_accel_label_size_request; -#ifdef USE_GTK3 widget_class->draw = meta_accel_label_draw; -#else - widget_class->expose_event = meta_accel_label_expose_event; -#endif class->signal_quote1 = g_strdup ("<:"); class->signal_quote2 = g_strdup (":>"); @@ -173,13 +153,8 @@ meta_accel_label_new_with_mnemonic (const gchar *string) return GTK_WIDGET (accel_label); } -#ifdef USE_GTK3 static void meta_accel_label_destroy (GtkWidget *object) -#else -static void -meta_accel_label_destroy (GtkObject *object) -#endif { MetaAccelLabel *accel_label = META_ACCEL_LABEL (object); @@ -190,11 +165,7 @@ meta_accel_label_destroy (GtkObject *object) accel_label->accel_mods = 0; accel_label->accel_key = 0; -#ifdef USE_GTK3 GTK_WIDGET_CLASS (meta_accel_label_parent_class)->destroy (object); -#else - GTK_OBJECT_CLASS (meta_accel_label_parent_class)->destroy (object); -#endif } static void @@ -251,7 +222,6 @@ meta_accel_label_size_request (GtkWidget *widget, g_object_unref (G_OBJECT (layout)); } -#ifdef USE_GTK3 /* Mostly taken from GTK3. */ static gboolean meta_accel_label_draw (GtkWidget *widget, @@ -338,89 +308,6 @@ meta_accel_label_draw (GtkWidget *widget, return FALSE; } -#else /* !USE_GTK3 */ -static gboolean -meta_accel_label_expose_event (GtkWidget *widget, - GdkEventExpose *event) -{ - MetaAccelLabel *accel_label = META_ACCEL_LABEL (widget); - GtkMisc *misc = GTK_MISC (accel_label); - PangoLayout *layout; - - if (gtk_widget_is_drawable (GTK_WIDGET (accel_label))) - { - GtkAllocation allocation; - GtkRequisition requisition; - int ac_width; - - gtk_widget_get_allocation (widget, &allocation); - gtk_widget_get_requisition (widget, &requisition); - ac_width = meta_accel_label_get_accel_width (accel_label); - - if (allocation.width >= requisition.width + ac_width) - { - GtkTextDirection direction = gtk_widget_get_direction (widget); - gfloat xalign, yalign; - gint x, y; - gint xpad, ypad; - - gtk_misc_get_padding (misc, &xpad, &ypad); - gtk_misc_get_alignment (misc, &xalign, &yalign); - - if (direction == GTK_TEXT_DIR_RTL) - { - allocation.x += ac_width; - } - allocation.width -= ac_width; - gtk_widget_set_allocation (widget, &allocation); - - if (GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event) - GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event (widget, event); - - if (direction == GTK_TEXT_DIR_RTL) - { - allocation.x -= ac_width; - } - allocation.width += ac_width; - gtk_widget_set_allocation (widget, &allocation); - - if (direction == GTK_TEXT_DIR_RTL) - { - x = allocation.x + xpad; - } - else - { - x = allocation.x + allocation.width - xpad - ac_width; - } - - y = (allocation.y * (1.0 - yalign) + - (allocation.y + allocation.height - - (requisition.height - ypad * 2)) * yalign) + 1.5; - - layout = gtk_widget_create_pango_layout (widget, accel_label->accel_string); - - gtk_paint_layout (gtk_widget_get_style (widget), - gtk_widget_get_window (widget), - gtk_widget_get_state (widget), - FALSE, - &event->area, - widget, - "accellabel", - x, y, - layout); - - g_object_unref (G_OBJECT (layout)); - } - else - { - if (GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event) - GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event (widget, event); - } - } - - return FALSE; -} -#endif /* !USE_GTK3 */ static void meta_accel_label_update (MetaAccelLabel *accel_label) diff --git a/src/ui/preview-widget.c b/src/ui/preview-widget.c index 3b9057e6b..ab3978efb 100644 --- a/src/ui/preview-widget.c +++ b/src/ui/preview-widget.c @@ -28,19 +28,12 @@ #include #include "preview-widget.h" -#include "gdk2-drawing-utils.h" - static void meta_preview_size_request (GtkWidget *widget, GtkRequisition *req); static void meta_preview_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -#ifdef USE_GTK3 static gboolean meta_preview_draw (GtkWidget *widget, cairo_t *cr); -#else -static gboolean meta_preview_expose (GtkWidget *widget, - GdkEventExpose *event); -#endif static void meta_preview_finalize (GObject *object); G_DEFINE_TYPE (MetaPreview, meta_preview, GTK_TYPE_BIN); @@ -55,11 +48,7 @@ meta_preview_class_init (MetaPreviewClass *class) gobject_class->finalize = meta_preview_finalize; -#ifdef USE_GTK3 widget_class->draw = meta_preview_draw; -#else - widget_class->expose_event = meta_preview_expose; -#endif widget_class->size_request = meta_preview_size_request; widget_class->size_allocate = meta_preview_size_allocate; } @@ -194,7 +183,6 @@ ensure_info (MetaPreview *preview) } } -#ifdef USE_GTK3 static gboolean meta_preview_draw (GtkWidget *widget, cairo_t *cr) @@ -203,21 +191,6 @@ meta_preview_draw (GtkWidget *widget, GtkAllocation allocation; gtk_widget_get_allocation (widget, &allocation); -#else -static gboolean -meta_preview_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - cairo_t *cr = meta_cairo_create (gtk_widget_get_window (widget)); - MetaPreview *preview = META_PREVIEW (widget); - GtkAllocation allocation; - - gdk_cairo_region (cr, event->region); - cairo_clip (cr); - - gtk_widget_get_allocation (widget, &allocation); - cairo_translate (cr, allocation.x, allocation.y); -#endif if (preview->theme) { @@ -262,15 +235,8 @@ meta_preview_expose (GtkWidget *widget, cairo_restore (cr); } -#ifdef USE_GTK3 /* draw child */ return GTK_WIDGET_CLASS (meta_preview_parent_class)->draw (widget, cr); -#else - cairo_destroy (cr); - - /* draw child */ - return GTK_WIDGET_CLASS (meta_preview_parent_class)->expose_event (widget, event); -#endif } static void diff --git a/src/ui/resizepopup.c b/src/ui/resizepopup.c index 7efbb24f8..c9e69fcb2 100644 --- a/src/ui/resizepopup.c +++ b/src/ui/resizepopup.c @@ -26,7 +26,6 @@ #include "util.h" #include #include -#include "gtk-compat.h" struct _MetaResizePopup { diff --git a/src/ui/tabpopup.c b/src/ui/tabpopup.c index 608cce764..2bc3fe016 100644 --- a/src/ui/tabpopup.c +++ b/src/ui/tabpopup.c @@ -36,9 +36,6 @@ #include #include -#include "gtk-compat.h" -#include "gdk2-drawing-utils.h" - #define OUTSIDE_SELECT_RECT 2 #define INSIDE_SELECT_RECT 2 @@ -74,21 +71,11 @@ static GtkWidget* selectable_workspace_new (MetaWorkspace *workspace); static void select_workspace (GtkWidget *widget); static void unselect_workspace (GtkWidget *widget); -#ifdef USE_GTK3 static gboolean outline_window_draw (GtkWidget *widget, cairo_t *cr, gpointer data) { -#else /* !USE_GTK3 */ -static gboolean -outline_window_expose (GtkWidget *widget, - GdkEventExpose *event, - gpointer data) -{ - cairo_t *cr = gdk_cairo_create (event->window); -#endif /* !USE_GTK3 */ - MetaTabPopup *popup; TabEntry *te; GtkStyle *style; @@ -116,10 +103,6 @@ outline_window_expose (GtkWidget *widget, te->inner_rect.height + 1); cairo_stroke (cr); -#ifndef USE_GTK3 - cairo_destroy (cr); -#endif - return FALSE; } @@ -260,13 +243,8 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries, gtk_widget_set_app_paintable (popup->outline_window, TRUE); gtk_widget_realize (popup->outline_window); -#ifdef USE_GTK3 g_signal_connect (G_OBJECT (popup->outline_window), "draw", G_CALLBACK (outline_window_draw), popup); -#else - g_signal_connect (G_OBJECT (popup->outline_window), "expose_event", - G_CALLBACK (outline_window_expose), popup); -#endif popup->window = gtk_window_new (GTK_WINDOW_POPUP); @@ -499,6 +477,9 @@ display_entry (MetaTabPopup *popup, if (popup->outline) { + cairo_region_t *region; + cairo_region_t *inner_region; + window = gtk_widget_get_window (popup->outline_window); /* Do stuff behind gtk's back */ @@ -516,40 +497,20 @@ display_entry (MetaTabPopup *popup, gdk_window_set_background (window, >k_widget_get_style (popup->outline_window)->black); - -#if GTK_CHECK_VERSION (2, 90, 8) /* gtk3 */ - { - cairo_region_t *region; - cairo_region_t *inner_region; - region = cairo_region_create_rectangle (&rect); - inner_region = cairo_region_create_rectangle (&te->inner_rect); - cairo_region_subtract (region, inner_region); - cairo_region_destroy (inner_region); - gdk_window_shape_combine_region (window, - region, - 0, 0); - cairo_region_destroy (region); - } -#else /* gtk2 */ - { - GdkRegion *region; - GdkRegion *inner_region; + region = cairo_region_create_rectangle (&rect); + inner_region = cairo_region_create_rectangle (&te->inner_rect); + cairo_region_subtract (region, inner_region); + cairo_region_destroy (inner_region); - region = gdk_region_rectangle (&rect); - inner_region = gdk_region_rectangle (&te->inner_rect); - gdk_region_subtract (region, inner_region); - gdk_region_destroy (inner_region); + gdk_window_shape_combine_region (window, + region, + 0, 0); - gdk_window_shape_combine_region (window, - region, - 0, 0); - - gdk_region_destroy (region); - } -#endif /* gtk2 */ + cairo_region_destroy (region); + /* This should piss off gtk a bit, but we don't want to raise * above the tab popup. So, instead of calling gtk_widget_show, @@ -693,13 +654,8 @@ unselect_image (GtkWidget *widget) } static void meta_select_image_class_init (MetaSelectImageClass *klass); -#if USE_GTK3 static gboolean meta_select_image_draw (GtkWidget *widget, cairo_t *cr); -#else -static gboolean meta_select_image_expose_event (GtkWidget *widget, - GdkEventExpose *event); -#endif static GtkImageClass *parent_class; @@ -738,14 +694,9 @@ meta_select_image_class_init (MetaSelectImageClass *klass) widget_class = GTK_WIDGET_CLASS (klass); -#if USE_GTK3 widget_class->draw = meta_select_image_draw; -#else - widget_class->expose_event = meta_select_image_expose_event; -#endif } -#if USE_GTK3 static gboolean meta_select_image_draw (GtkWidget *widget, cairo_t *cr) @@ -753,19 +704,6 @@ meta_select_image_draw (GtkWidget *widget, GtkAllocation allocation; gtk_widget_get_allocation (widget, &allocation); -#else /* !USE_GTK3 */ -static gboolean -meta_select_image_expose_event (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkAllocation allocation; - cairo_t *cr = gdk_cairo_create (event->window); - - gdk_cairo_region (cr, event->region); - cairo_clip (cr); - gtk_widget_get_allocation (widget, &allocation); - cairo_translate (cr, allocation.x, allocation.y); -#endif if (META_SELECT_IMAGE (widget)->selected) { @@ -806,13 +744,7 @@ meta_select_image_expose_event (GtkWidget *widget, cairo_set_line_width (cr, 1.0); } -#ifdef USE_GTK3 return GTK_WIDGET_CLASS (parent_class)->draw (widget, cr); -#else - cairo_destroy (cr); - - return GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event); -#endif /* !USE_GTK3 */ } #define META_TYPE_SELECT_WORKSPACE (meta_select_workspace_get_type ()) @@ -876,13 +808,8 @@ unselect_workspace (GtkWidget *widget) static void meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass); -#if USE_GTK3 static gboolean meta_select_workspace_draw (GtkWidget *widget, cairo_t *cr); -#else -static gboolean meta_select_workspace_expose_event (GtkWidget *widget, - GdkEventExpose *event); -#endif GType meta_select_workspace_get_type (void) @@ -920,11 +847,7 @@ meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass) widget_class = GTK_WIDGET_CLASS (klass); -#if USE_GTK3 widget_class->draw = meta_select_workspace_draw; -#else - widget_class->expose_event = meta_select_workspace_expose_event; -#endif } /** @@ -961,18 +884,10 @@ meta_convert_meta_to_wnck (MetaWindow *window, MetaScreen *screen) } -#ifdef USE_GTK3 static gboolean meta_select_workspace_draw (GtkWidget *widget, cairo_t *cr) { -#else /* !USE_GTK3 */ -static gboolean -meta_select_workspace_expose_event (GtkWidget *widget, - GdkEventExpose *event) -{ - cairo_t *cr = gdk_cairo_create (event->window); -#endif /* !USE_GTK3 */ MetaWorkspace *workspace; WnckWindowDisplayInfo *windows; GtkAllocation allocation; @@ -1047,9 +962,5 @@ meta_select_workspace_expose_event (GtkWidget *widget, cairo_stroke (cr); } -#ifndef USE_GTK3 - cairo_destroy (cr); -#endif - return TRUE; } diff --git a/src/ui/theme-viewer.c b/src/ui/theme-viewer.c index 86fa344f7..56620b68e 100644 --- a/src/ui/theme-viewer.c +++ b/src/ui/theme-viewer.c @@ -34,8 +34,6 @@ #define _(x) dgettext (GETTEXT_PACKAGE, x) #define N_(x) x -#include "gdk2-drawing-utils.h" - /* We need to compute all different button arrangements * in terms of button location. We don't care about * different arrangements in terms of button function. @@ -942,7 +940,7 @@ static void run_theme_benchmark (void) { GtkWidget* widget; - MetaPixmap *pixmap; + cairo_surface_t *pixmap; int top_height, bottom_height, left_width, right_width; MetaButtonState button_states[META_BUTTON_TYPE_LAST] = { @@ -1006,11 +1004,12 @@ run_theme_benchmark (void) /* Creating the pixmap in the loop is right, since * GDK does the same with its double buffering. */ - pixmap = meta_pixmap_new (gtk_widget_get_window (widget), - client_width + left_width + right_width, - client_height + top_height + bottom_height); + pixmap = gdk_window_create_similar_surface (gtk_widget_get_window (widget), + CAIRO_CONTENT_COLOR, + client_width + left_width + right_width, + client_height + top_height + bottom_height); - cr = meta_pixmap_cairo_create (pixmap); + cr = cairo_create (pixmap); meta_theme_draw_frame (global_theme, widget, @@ -1026,7 +1025,7 @@ run_theme_benchmark (void) meta_preview_get_icon ()); cairo_destroy (cr); - meta_pixmap_free (pixmap); + cairo_surface_destroy (pixmap); ++i; client_width += inc; diff --git a/src/ui/theme.c b/src/ui/theme.c index 6514882a6..dac898a34 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -61,10 +61,6 @@ #include #include -#include "gtk-compat.h" -#include "gdk-compat.h" -#include "gdk2-drawing-utils.h" - #define GDK_COLOR_RGBA(color) \ ((guint32) (0xff | \ (((color).red / 256) << 24) | \ @@ -3712,7 +3708,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, rwidth = parse_size_unchecked (op->data.gtk_arrow.width, env); rheight = parse_size_unchecked (op->data.gtk_arrow.height, env); - meta_paint_arrow (style_gtk, + gtk_paint_arrow (style_gtk, cr, op->data.gtk_arrow.state, op->data.gtk_arrow.shadow, @@ -3733,7 +3729,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, rwidth = parse_size_unchecked (op->data.gtk_box.width, env); rheight = parse_size_unchecked (op->data.gtk_box.height, env); - meta_paint_box (style_gtk, + gtk_paint_box (style_gtk, cr, op->data.gtk_box.state, op->data.gtk_box.shadow, @@ -3751,7 +3747,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, ry1 = parse_y_position_unchecked (op->data.gtk_vline.y1, env); ry2 = parse_y_position_unchecked (op->data.gtk_vline.y2, env); - meta_paint_vline (style_gtk, + gtk_paint_vline (style_gtk, cr, op->data.gtk_vline.state, widget, diff --git a/src/ui/tile-preview.c b/src/ui/tile-preview.c index 83efab893..214e1fa49 100644 --- a/src/ui/tile-preview.c +++ b/src/ui/tile-preview.c @@ -29,8 +29,6 @@ #include "tile-preview.h" #include "core.h" -#include "gdk2-drawing-utils.h" - #define OUTLINE_WIDTH 5 /* frame width in non-composite case */ @@ -46,20 +44,11 @@ struct _MetaTilePreview { gboolean has_alpha: 1; }; -#ifdef USE_GTK3 static gboolean meta_tile_preview_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data) { -#else -static gboolean -meta_tile_preview_expose (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data) -{ - cairo_t *cr = gdk_cairo_create (event->window); -#endif MetaTilePreview *preview = user_data; cairo_set_line_width (cr, 1.0); @@ -98,10 +87,6 @@ meta_tile_preview_expose (GtkWidget *widget, preview->tile_rect.height - 1); cairo_stroke (cr); -#ifndef USE_GTK3 - cairo_destroy (cr); -#endif - return FALSE; } @@ -163,13 +148,8 @@ meta_tile_preview_new (int screen_number, if (preview->has_alpha) { -#ifdef USE_GTK3 gtk_widget_set_visual (preview->preview_window, gdk_screen_get_rgba_visual (screen)); -#else - gtk_widget_set_colormap (preview->preview_window, - gdk_screen_get_rgba_colormap (screen)); -#endif g_signal_connect (preview->preview_window, "style-set", G_CALLBACK (on_preview_window_style_set), preview); @@ -181,15 +161,8 @@ meta_tile_preview_new (int screen_number, */ preview->create_serial = XNextRequest (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); gtk_widget_realize (preview->preview_window); -#ifdef USE_GTK3 g_signal_connect (preview->preview_window, "draw", G_CALLBACK (meta_tile_preview_draw), preview); -#else - gdk_window_set_back_pixmap (gtk_widget_get_window (preview->preview_window), - NULL, FALSE); - g_signal_connect (preview->preview_window, "expose-event", - G_CALLBACK (meta_tile_preview_expose), preview); -#endif return preview; } @@ -239,6 +212,7 @@ meta_tile_preview_show (MetaTilePreview *preview, if (!preview->has_alpha) { + cairo_region_t *outer_region, *inner_region; GdkRectangle outer_rect, inner_rect; GdkColor black; @@ -254,33 +228,14 @@ meta_tile_preview_show (MetaTilePreview *preview, inner_rect.width = outer_rect.width - 2 * OUTLINE_WIDTH; inner_rect.height = outer_rect.height - 2 * OUTLINE_WIDTH; -#if GTK_CHECK_VERSION (2, 90, 8) /* gtk3 */ - { - cairo_region_t *outer_region, *inner_region; + outer_region = cairo_region_create_rectangle (&outer_rect); + inner_region = cairo_region_create_rectangle (&inner_rect); - outer_region = cairo_region_create_rectangle (&outer_rect); - inner_region = cairo_region_create_rectangle (&inner_rect); + cairo_region_subtract (outer_region, inner_region); + cairo_region_destroy (inner_region); - cairo_region_subtract (outer_region, inner_region); - cairo_region_destroy (inner_region); - - gdk_window_shape_combine_region (window, outer_region, 0, 0); - cairo_region_destroy (outer_region); - } -#else /* gtk2 */ - { - GdkRegion *outer_region, *inner_region; - - outer_region = gdk_region_rectangle (&outer_rect); - inner_region = gdk_region_rectangle (&inner_rect); - - gdk_region_subtract (outer_region, inner_region); - gdk_region_destroy (inner_region); - - gdk_window_shape_combine_region (window, outer_region, 0, 0); - gdk_region_destroy (outer_region); - } -#endif /* gtk2 */ + gdk_window_shape_combine_region (window, outer_region, 0, 0); + cairo_region_destroy (outer_region); } } diff --git a/src/ui/ui.c b/src/ui/ui.c index 6e8061770..ea943fff0 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -32,8 +32,6 @@ #include "theme-private.h" #include "inlinepixbufs.h" -#include "gdk-compat.h" -#include "gdk2-drawing-utils.h" #include #include @@ -174,9 +172,6 @@ meta_ui_create_frame_window (MetaUI *ui, gint attributes_mask; GdkWindow *window; GdkVisual *visual; -#ifndef USE_GTK3 - GdkColormap *cmap = gdk_screen_get_default_colormap (screen); -#endif /* Default depth/visual handles clients with weird visuals; they can * always be children of the root depth/visual obviously, but @@ -189,9 +184,6 @@ meta_ui_create_frame_window (MetaUI *ui, { visual = gdk_x11_screen_lookup_visual (screen, XVisualIDFromVisual (xvisual)); -#ifndef USE_GTK3 - cmap = gdk_colormap_new (visual, FALSE); -#endif } attrs.title = NULL; @@ -207,9 +199,6 @@ meta_ui_create_frame_window (MetaUI *ui, attrs.y = y; attrs.wclass = GDK_INPUT_OUTPUT; attrs.visual = visual; -#ifndef USE_GTK3 - attrs.colormap = cmap; -#endif attrs.window_type = GDK_WINDOW_CHILD; attrs.cursor = NULL; attrs.wmclass_name = NULL; @@ -219,11 +208,7 @@ meta_ui_create_frame_window (MetaUI *ui, attrs.width = width; attrs.height = height; -#ifdef USE_GTK3 attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; -#else - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; -#endif /* We make an assumption that gdk_window_new() is going to call * XCreateWindow as it's first operation; this seems to be true currently @@ -370,7 +355,6 @@ meta_ui_window_menu_free (MetaWindowMenu *menu) meta_window_menu_free (menu); } -#ifdef USE_GTK3 GdkPixbuf* meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap, int src_x, @@ -420,84 +404,6 @@ meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap, return retval; } -#else /* !USE_GTK3 */ -static GdkColormap* -get_cmap (GdkPixmap *pixmap) -{ - GdkColormap *cmap; - - cmap = gdk_drawable_get_colormap (pixmap); - if (cmap) - g_object_ref (G_OBJECT (cmap)); - - if (cmap == NULL) - { - if (gdk_drawable_get_depth (pixmap) == 1) - { - meta_verbose ("Using NULL colormap for snapshotting bitmap\n"); - cmap = NULL; - } - else - { - meta_verbose ("Using system cmap to snapshot pixmap\n"); - cmap = gdk_screen_get_system_colormap (gdk_drawable_get_screen (pixmap)); - - g_object_ref (G_OBJECT (cmap)); - } - } - - /* Be sure we aren't going to blow up due to visual mismatch */ - if (cmap && - (gdk_visual_get_depth (gdk_colormap_get_visual (cmap)) != - gdk_drawable_get_depth (pixmap))) - { - cmap = NULL; - meta_verbose ("Switching back to NULL cmap because of depth mismatch\n"); - } - - return cmap; -} - -GdkPixbuf* -meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap, - int src_x, - int src_y, - int width, - int height) -{ - GdkDrawable *drawable; - GdkPixbuf *retval; - GdkColormap *cmap; - - retval = NULL; - cmap = NULL; - - drawable = gdk_xid_table_lookup (xpixmap); - - if (drawable) - g_object_ref (G_OBJECT (drawable)); - else - drawable = gdk_pixmap_foreign_new (xpixmap); - - if (drawable) - { - cmap = get_cmap (drawable); - - retval = gdk_pixbuf_get_from_drawable (NULL, - drawable, - cmap, - src_x, src_y, - 0, 0, - width, height); - } - if (cmap) - g_object_unref (G_OBJECT (cmap)); - if (drawable) - g_object_unref (G_OBJECT (drawable)); - - return retval; -} -#endif /* !USE_GTK3 */ void meta_ui_push_delay_exposes (MetaUI *ui)