From 8a560e56a0492605557491c437717494eb3683cc480500510485a73071896961 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Mon, 12 Dec 2011 11:51:21 +0000 Subject: [PATCH] Accepting request 96341 from home:vuntz:branches:GNOME:Factory Drop clutter 1.10 patch OBS-URL: https://build.opensuse.org/request/show/96341 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-shell?expand=0&rev=91 --- gnome-shell-clutter-1.10.patch | 682 --------------------------------- gnome-shell.changes | 7 + gnome-shell.spec | 3 - 3 files changed, 7 insertions(+), 685 deletions(-) delete mode 100644 gnome-shell-clutter-1.10.patch diff --git a/gnome-shell-clutter-1.10.patch b/gnome-shell-clutter-1.10.patch deleted file mode 100644 index f6d25f2..0000000 --- a/gnome-shell-clutter-1.10.patch +++ /dev/null @@ -1,682 +0,0 @@ -From c34eae9c3c8fd61d139506a382a40f64c039f3d2 Mon Sep 17 00:00:00 2001 -From: "Jasper St. Pierre" -Date: Mon, 21 Nov 2011 11:56:24 -0500 -Subject: [PATCH] Do not use the default stage - -https://bugzilla.gnome.org/show_bug.cgi?id=664052 ---- - js/ui/magnifier.js | 2 +- - src/gnome-shell-plugin.c | 2 +- - src/main.c | 249 --------------------------------------------- - src/shell-global.c | 248 ++++++++++++++++++++++++++++++++++++++++++++ - src/shell-xfixes-cursor.c | 24 +++-- - src/shell-xfixes-cursor.h | 2 +- - src/st/test-theme.c | 2 +- - src/test-recorder.c | 2 +- - 8 files changed, 270 insertions(+), 261 deletions(-) - -diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js -index c42c146..1a457ab 100644 ---- a/js/ui/magnifier.js -+++ b/js/ui/magnifier.js -@@ -46,7 +46,7 @@ Magnifier.prototype = { - this._zoomRegions = []; - - // Create small clutter tree for the magnified mouse. -- let xfixesCursor = Shell.XFixesCursor.get_default(); -+ let xfixesCursor = Shell.XFixesCursor.get_for_stage(global.stage); - this._mouseSprite = new Clutter.Texture(); - xfixesCursor.update_texture_image(this._mouseSprite); - this._cursorRoot = new Clutter.Group(); -diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c -index 4708e0a..5f3fab4 100644 ---- a/src/gnome-shell-plugin.c -+++ b/src/gnome-shell-plugin.c -@@ -323,7 +323,7 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, - #endif - - if ((xev->xany.type == EnterNotify || xev->xany.type == LeaveNotify) -- && xev->xcrossing.window == clutter_x11_get_stage_window (CLUTTER_STAGE (clutter_stage_get_default ()))) -+ && xev->xcrossing.window == clutter_x11_get_stage_window (CLUTTER_STAGE (meta_plugin_get_stage (plugin)))) - { - /* If the pointer enters a child of the stage window (eg, a - * trayicon), we want to consider it to still be in the stage, -diff --git a/src/main.c b/src/main.c -index 42d1446..e1e8722 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -8,7 +8,6 @@ - #include - #include - --#include - #include - #include - #include -@@ -160,157 +159,6 @@ shell_dbus_init (gboolean replace) - } - - static void --constrain_tooltip (StTooltip *tooltip, -- const ClutterGeometry *geometry, -- ClutterGeometry *adjusted_geometry, -- gpointer data) --{ -- const ClutterGeometry *tip_area = st_tooltip_get_tip_area (tooltip); -- ShellGlobal *global = shell_global_get (); -- MetaScreen *screen = shell_global_get_screen (global); -- int n_monitors = meta_screen_get_n_monitors (screen); -- int i; -- -- *adjusted_geometry = *geometry; -- -- /* A point that determines what screen we'll constrain to */ -- int x = tip_area->x + tip_area->width / 2; -- int y = tip_area->y + tip_area->height / 2; -- -- for (i = 0; i < n_monitors; i++) -- { -- MetaRectangle rect; -- meta_screen_get_monitor_geometry (screen, i, &rect); -- if (x >= rect.x && x < rect.x + rect.width && -- y >= rect.y && y < rect.y + rect.height) -- { -- if (adjusted_geometry->x + adjusted_geometry->width > rect.x + rect.width) -- adjusted_geometry->x = rect.x + rect.width - adjusted_geometry->width; -- if (adjusted_geometry->x < rect.x) -- adjusted_geometry->x = rect.x; -- -- if (adjusted_geometry->y + adjusted_geometry->height > rect.y + rect.height) -- adjusted_geometry->y = rect.y + rect.height - adjusted_geometry->height; -- if (adjusted_geometry->y < rect.y) -- adjusted_geometry->y = rect.y; -- -- return; -- } -- } --} -- --static void --update_font_options (GtkSettings *settings) --{ -- StThemeContext *context; -- ClutterStage *stage; -- ClutterBackend *backend; -- gint dpi; -- gint hinting; -- gchar *hint_style_str; -- cairo_hint_style_t hint_style = CAIRO_HINT_STYLE_NONE; -- gint antialias; -- cairo_antialias_t antialias_mode = CAIRO_ANTIALIAS_NONE; -- cairo_font_options_t *options; -- -- g_object_get (settings, -- "gtk-xft-dpi", &dpi, -- "gtk-xft-antialias", &antialias, -- "gtk-xft-hinting", &hinting, -- "gtk-xft-hintstyle", &hint_style_str, -- NULL); -- -- stage = CLUTTER_STAGE (clutter_stage_get_default ()); -- context = st_theme_context_get_for_stage (stage); -- -- if (dpi != -1) -- /* GTK stores resolution as 1024 * dots/inch */ -- st_theme_context_set_resolution (context, dpi / 1024); -- else -- st_theme_context_set_default_resolution (context); -- -- st_tooltip_set_constrain_func (stage, constrain_tooltip, NULL, NULL); -- -- /* Clutter (as of 0.9) passes comprehensively wrong font options -- * override whatever set_font_flags() did above. -- * -- * http://bugzilla.openedhand.com/show_bug.cgi?id=1456 -- */ -- backend = clutter_get_default_backend (); -- options = cairo_font_options_create (); -- -- cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); -- -- if (hinting >= 0 && !hinting) -- { -- hint_style = CAIRO_HINT_STYLE_NONE; -- } -- else if (hint_style_str) -- { -- if (strcmp (hint_style_str, "hintnone") == 0) -- hint_style = CAIRO_HINT_STYLE_NONE; -- else if (strcmp (hint_style_str, "hintslight") == 0) -- hint_style = CAIRO_HINT_STYLE_SLIGHT; -- else if (strcmp (hint_style_str, "hintmedium") == 0) -- hint_style = CAIRO_HINT_STYLE_MEDIUM; -- else if (strcmp (hint_style_str, "hintfull") == 0) -- hint_style = CAIRO_HINT_STYLE_FULL; -- } -- -- g_free (hint_style_str); -- -- cairo_font_options_set_hint_style (options, hint_style); -- -- /* We don't want to turn on subpixel anti-aliasing; since Clutter -- * doesn't currently have the code to support ARGB masks, -- * generating them then squashing them back to A8 is pointless. -- */ -- antialias_mode = (antialias < 0 || antialias) ? CAIRO_ANTIALIAS_GRAY -- : CAIRO_ANTIALIAS_NONE; -- -- cairo_font_options_set_antialias (options, antialias_mode); -- -- clutter_backend_set_font_options (backend, options); -- cairo_font_options_destroy (options); --} -- --static void --settings_notify_cb (GtkSettings *settings, -- GParamSpec *pspec, -- gpointer data) --{ -- update_font_options (settings); --} -- --static void --shell_fonts_init (void) --{ -- GtkSettings *settings; -- CoglPangoFontMap *fontmap; -- -- /* Disable text mipmapping; it causes problems on pre-GEM Intel -- * drivers and we should just be rendering text at the right -- * size rather than scaling it. If we do effects where we dynamically -- * zoom labels, then we might want to reconsider. -- */ -- fontmap = COGL_PANGO_FONT_MAP (clutter_get_font_map ()); -- cogl_pango_font_map_set_use_mipmapping (fontmap, FALSE); -- -- settings = gtk_settings_get_default (); -- g_object_connect (settings, -- "signal::notify::gtk-xft-dpi", -- G_CALLBACK (settings_notify_cb), NULL, -- "signal::notify::gtk-xft-antialias", -- G_CALLBACK (settings_notify_cb), NULL, -- "signal::notify::gtk-xft-hinting", -- G_CALLBACK (settings_notify_cb), NULL, -- "signal::notify::gtk-xft-hintstyle", -- G_CALLBACK (settings_notify_cb), NULL, -- NULL); -- update_font_options (settings); --} -- --static void - shell_prefs_init (void) - { - meta_prefs_override_preference_schema ("attach-modal-dialogs", -@@ -323,100 +171,6 @@ shell_prefs_init (void) - OVERRIDES_SCHEMA); - } - --/* This is an IBus workaround. The flow of events with IBus is that every time -- * it gets gets a key event, it: -- * -- * Sends it to the daemon via D-Bus asynchronously -- * When it gets an reply, synthesizes a new GdkEvent and puts it into the -- * GDK event queue with gdk_event_put(), including -- * IBUS_FORWARD_MASK = 1 << 25 in the state to prevent a loop. -- * -- * (Normally, IBus uses the GTK+ key snooper mechanism to get the key -- * events early, but since our key events aren't visible to GTK+ key snoopers, -- * IBus will instead get the events via the standard -- * GtkIMContext.filter_keypress() mechanism.) -- * -- * There are a number of potential problems here; probably the worst -- * problem is that IBus doesn't forward the timestamp with the event -- * so that every key event that gets delivered ends up with -- * GDK_CURRENT_TIME. This creates some very subtle bugs; for example -- * if you have IBus running and a keystroke is used to trigger -- * launching an application, focus stealing prevention won't work -- * right. http://code.google.com/p/ibus/issues/detail?id=1184 -- * -- * In any case, our normal flow of key events is: -- * -- * GDK filter function => clutter_x11_handle_event => clutter actor -- * -- * So, if we see a key event that gets delivered via the GDK event handler -- * function - then we know it must be one of these synthesized events, and -- * we should push it back to clutter. -- * -- * To summarize, the full key event flow with IBus is: -- * -- * GDK filter function -- * => Mutter -- * => gnome_shell_plugin_xevent_filter() -- * => clutter_x11_handle_event() -- * => clutter event delivery to actor -- * => gtk_im_context_filter_event() -- * => sent to IBus daemon -- * => response received from IBus daemon -- * => gdk_event_put() -- * => GDK event handler -- * => -- * => clutter_event_put() -- * => clutter event delivery to actor -- * -- * Anything else we see here we just pass on to the normal GDK event handler -- * gtk_main_do_event(). -- */ --static void --gnome_shell_gdk_event_handler (GdkEvent *event_gdk, -- gpointer data) --{ -- if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE) -- { -- ClutterActor *stage; -- Window stage_xwindow; -- -- stage = clutter_stage_get_default (); -- stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage)); -- -- if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow) -- { -- ClutterDeviceManager *device_manager = clutter_device_manager_get_default (); -- ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager, -- CLUTTER_KEYBOARD_DEVICE); -- -- ClutterEvent *event_clutter = clutter_event_new ((event_gdk->type == GDK_KEY_PRESS) ? -- CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE); -- event_clutter->key.time = event_gdk->key.time; -- event_clutter->key.flags = CLUTTER_EVENT_NONE; -- event_clutter->key.stage = CLUTTER_STAGE (stage); -- event_clutter->key.source = NULL; -- -- /* This depends on ClutterModifierType and GdkModifierType being -- * identical, which they are currently. (They both match the X -- * modifier state in the low 16-bits and have the same extensions.) */ -- event_clutter->key.modifier_state = event_gdk->key.state; -- -- event_clutter->key.keyval = event_gdk->key.keyval; -- event_clutter->key.hardware_keycode = event_gdk->key.hardware_keycode; -- event_clutter->key.unicode_value = gdk_keyval_to_unicode (event_clutter->key.keyval); -- event_clutter->key.device = keyboard; -- -- clutter_event_put (event_clutter); -- clutter_event_free (event_clutter); -- -- return; -- } -- } -- -- gtk_main_do_event (event_gdk); --} -- -- - static void - malloc_statistics_callback (ShellPerfLog *perf_log, - gpointer data) -@@ -559,12 +313,9 @@ main (int argc, char **argv) - - shell_dbus_init (meta_get_replace_current_wm ()); - shell_a11y_init (); -- shell_fonts_init (); - shell_perf_log_init (); - shell_prefs_init (); - -- gdk_event_handler_set (gnome_shell_gdk_event_handler, NULL, NULL); -- - g_irepository_prepend_search_path (GNOME_SHELL_PKGLIBDIR); - #if HAVE_BLUETOOTH - g_irepository_prepend_search_path (BLUETOOTH_DIR); -diff --git a/src/shell-global.c b/src/shell-global.c -index 1151951..ba334cb 100644 ---- a/src/shell-global.c -+++ b/src/shell-global.c -@@ -15,6 +15,7 @@ - #endif - - #include -+#include - #include - #include - #include -@@ -788,6 +789,249 @@ global_stage_after_paint (ClutterStage *stage, - "clutter.stagePaintDone"); - } - -+static void -+constrain_tooltip (StTooltip *tooltip, -+ const ClutterGeometry *geometry, -+ ClutterGeometry *adjusted_geometry, -+ gpointer data) -+{ -+ const ClutterGeometry *tip_area = st_tooltip_get_tip_area (tooltip); -+ ShellGlobal *global = shell_global_get (); -+ MetaScreen *screen = shell_global_get_screen (global); -+ int n_monitors = meta_screen_get_n_monitors (screen); -+ int i; -+ -+ *adjusted_geometry = *geometry; -+ -+ /* A point that determines what screen we'll constrain to */ -+ int x = tip_area->x + tip_area->width / 2; -+ int y = tip_area->y + tip_area->height / 2; -+ -+ for (i = 0; i < n_monitors; i++) -+ { -+ MetaRectangle rect; -+ meta_screen_get_monitor_geometry (screen, i, &rect); -+ if (x >= rect.x && x < rect.x + rect.width && -+ y >= rect.y && y < rect.y + rect.height) -+ { -+ if (adjusted_geometry->x + adjusted_geometry->width > rect.x + rect.width) -+ adjusted_geometry->x = rect.x + rect.width - adjusted_geometry->width; -+ if (adjusted_geometry->x < rect.x) -+ adjusted_geometry->x = rect.x; -+ -+ if (adjusted_geometry->y + adjusted_geometry->height > rect.y + rect.height) -+ adjusted_geometry->y = rect.y + rect.height - adjusted_geometry->height; -+ if (adjusted_geometry->y < rect.y) -+ adjusted_geometry->y = rect.y; -+ -+ return; -+ } -+ } -+} -+ -+static void -+update_font_options (GtkSettings *settings, -+ ClutterStage *stage) -+{ -+ StThemeContext *context; -+ ClutterBackend *backend; -+ gint dpi; -+ gint hinting; -+ gchar *hint_style_str; -+ cairo_hint_style_t hint_style = CAIRO_HINT_STYLE_NONE; -+ gint antialias; -+ cairo_antialias_t antialias_mode = CAIRO_ANTIALIAS_NONE; -+ cairo_font_options_t *options; -+ -+ g_object_get (settings, -+ "gtk-xft-dpi", &dpi, -+ "gtk-xft-antialias", &antialias, -+ "gtk-xft-hinting", &hinting, -+ "gtk-xft-hintstyle", &hint_style_str, -+ NULL); -+ -+ context = st_theme_context_get_for_stage (stage); -+ -+ if (dpi != -1) -+ /* GTK stores resolution as 1024 * dots/inch */ -+ st_theme_context_set_resolution (context, dpi / 1024); -+ else -+ st_theme_context_set_default_resolution (context); -+ -+ st_tooltip_set_constrain_func (stage, constrain_tooltip, NULL, NULL); -+ -+ /* Clutter (as of 0.9) passes comprehensively wrong font options -+ * override whatever set_font_flags() did above. -+ * -+ * http://bugzilla.openedhand.com/show_bug.cgi?id=1456 -+ */ -+ backend = clutter_get_default_backend (); -+ options = cairo_font_options_create (); -+ -+ cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); -+ -+ if (hinting >= 0 && !hinting) -+ { -+ hint_style = CAIRO_HINT_STYLE_NONE; -+ } -+ else if (hint_style_str) -+ { -+ if (strcmp (hint_style_str, "hintnone") == 0) -+ hint_style = CAIRO_HINT_STYLE_NONE; -+ else if (strcmp (hint_style_str, "hintslight") == 0) -+ hint_style = CAIRO_HINT_STYLE_SLIGHT; -+ else if (strcmp (hint_style_str, "hintmedium") == 0) -+ hint_style = CAIRO_HINT_STYLE_MEDIUM; -+ else if (strcmp (hint_style_str, "hintfull") == 0) -+ hint_style = CAIRO_HINT_STYLE_FULL; -+ } -+ -+ g_free (hint_style_str); -+ -+ cairo_font_options_set_hint_style (options, hint_style); -+ -+ /* We don't want to turn on subpixel anti-aliasing; since Clutter -+ * doesn't currently have the code to support ARGB masks, -+ * generating them then squashing them back to A8 is pointless. -+ */ -+ antialias_mode = (antialias < 0 || antialias) ? CAIRO_ANTIALIAS_GRAY -+ : CAIRO_ANTIALIAS_NONE; -+ -+ cairo_font_options_set_antialias (options, antialias_mode); -+ -+ clutter_backend_set_font_options (backend, options); -+ cairo_font_options_destroy (options); -+} -+ -+static void -+settings_notify_cb (GtkSettings *settings, -+ GParamSpec *pspec, -+ gpointer data) -+{ -+ update_font_options (settings, CLUTTER_STAGE (data)); -+} -+ -+static void -+shell_fonts_init (ClutterStage *stage) -+{ -+ GtkSettings *settings; -+ CoglPangoFontMap *fontmap; -+ -+ /* Disable text mipmapping; it causes problems on pre-GEM Intel -+ * drivers and we should just be rendering text at the right -+ * size rather than scaling it. If we do effects where we dynamically -+ * zoom labels, then we might want to reconsider. -+ */ -+ fontmap = COGL_PANGO_FONT_MAP (clutter_get_font_map ()); -+ cogl_pango_font_map_set_use_mipmapping (fontmap, FALSE); -+ -+ settings = gtk_settings_get_default (); -+ g_object_connect (settings, -+ "signal::notify::gtk-xft-dpi", -+ G_CALLBACK (settings_notify_cb), stage, -+ "signal::notify::gtk-xft-antialias", -+ G_CALLBACK (settings_notify_cb), stage, -+ "signal::notify::gtk-xft-hinting", -+ G_CALLBACK (settings_notify_cb), stage, -+ "signal::notify::gtk-xft-hintstyle", -+ G_CALLBACK (settings_notify_cb), stage, -+ NULL); -+ update_font_options (settings, stage); -+} -+ -+/* This is an IBus workaround. The flow of events with IBus is that every time -+ * it gets gets a key event, it: -+ * -+ * Sends it to the daemon via D-Bus asynchronously -+ * When it gets an reply, synthesizes a new GdkEvent and puts it into the -+ * GDK event queue with gdk_event_put(), including -+ * IBUS_FORWARD_MASK = 1 << 25 in the state to prevent a loop. -+ * -+ * (Normally, IBus uses the GTK+ key snooper mechanism to get the key -+ * events early, but since our key events aren't visible to GTK+ key snoopers, -+ * IBus will instead get the events via the standard -+ * GtkIMContext.filter_keypress() mechanism.) -+ * -+ * There are a number of potential problems here; probably the worst -+ * problem is that IBus doesn't forward the timestamp with the event -+ * so that every key event that gets delivered ends up with -+ * GDK_CURRENT_TIME. This creates some very subtle bugs; for example -+ * if you have IBus running and a keystroke is used to trigger -+ * launching an application, focus stealing prevention won't work -+ * right. http://code.google.com/p/ibus/issues/detail?id=1184 -+ * -+ * In any case, our normal flow of key events is: -+ * -+ * GDK filter function => clutter_x11_handle_event => clutter actor -+ * -+ * So, if we see a key event that gets delivered via the GDK event handler -+ * function - then we know it must be one of these synthesized events, and -+ * we should push it back to clutter. -+ * -+ * To summarize, the full key event flow with IBus is: -+ * -+ * GDK filter function -+ * => Mutter -+ * => gnome_shell_plugin_xevent_filter() -+ * => clutter_x11_handle_event() -+ * => clutter event delivery to actor -+ * => gtk_im_context_filter_event() -+ * => sent to IBus daemon -+ * => response received from IBus daemon -+ * => gdk_event_put() -+ * => GDK event handler -+ * => -+ * => clutter_event_put() -+ * => clutter event delivery to actor -+ * -+ * Anything else we see here we just pass on to the normal GDK event handler -+ * gtk_main_do_event(). -+ */ -+static void -+gnome_shell_gdk_event_handler (GdkEvent *event_gdk, -+ gpointer data) -+{ -+ if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE) -+ { -+ ClutterActor *stage; -+ Window stage_xwindow; -+ -+ stage = CLUTTER_ACTOR (data); -+ stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage)); -+ -+ if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow) -+ { -+ ClutterDeviceManager *device_manager = clutter_device_manager_get_default (); -+ ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager, -+ CLUTTER_KEYBOARD_DEVICE); -+ -+ ClutterEvent *event_clutter = clutter_event_new ((event_gdk->type == GDK_KEY_PRESS) ? -+ CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE); -+ event_clutter->key.time = event_gdk->key.time; -+ event_clutter->key.flags = CLUTTER_EVENT_NONE; -+ event_clutter->key.stage = CLUTTER_STAGE (stage); -+ event_clutter->key.source = NULL; -+ -+ /* This depends on ClutterModifierType and GdkModifierType being -+ * identical, which they are currently. (They both match the X -+ * modifier state in the low 16-bits and have the same extensions.) */ -+ event_clutter->key.modifier_state = event_gdk->key.state; -+ -+ event_clutter->key.keyval = event_gdk->key.keyval; -+ event_clutter->key.hardware_keycode = event_gdk->key.hardware_keycode; -+ event_clutter->key.unicode_value = gdk_keyval_to_unicode (event_clutter->key.keyval); -+ event_clutter->key.device = keyboard; -+ -+ clutter_event_put (event_clutter); -+ clutter_event_free (event_clutter); -+ -+ return; -+ } -+ } -+ -+ gtk_main_do_event (event_gdk); -+} -+ - void - _shell_global_set_plugin (ShellGlobal *global, - MetaPlugin *plugin) -@@ -833,6 +1077,10 @@ _shell_global_set_plugin (ShellGlobal *global, - g_signal_connect (global->meta_display, "notify::focus-window", - G_CALLBACK (focus_window_changed), global); - -+ shell_fonts_init (global->stage); -+ -+ gdk_event_handler_set (gnome_shell_gdk_event_handler, global->stage, NULL); -+ - global->focus_manager = st_focus_manager_get_for_stage (global->stage); - } - -diff --git a/src/shell-xfixes-cursor.c b/src/shell-xfixes-cursor.c -index df7ff5b..7946b9c 100644 ---- a/src/shell-xfixes-cursor.c -+++ b/src/shell-xfixes-cursor.c -@@ -320,19 +320,29 @@ shell_xfixes_cursor_class_init (ShellXFixesCursorClass *klass) - } - - /** -- * shell_xfixes_cursor_get_default: -+ * shell_xfixes_cursor_get_for_stage: -+ * @stage: (transfer none): The #ClutterStage attached to the cursor - * -- * Return value: (transfer none): The global #ShellXFixesCursor singleton -+ * Return value: (transfer none): A #ShellXFixesCursor instance - */ - ShellXFixesCursor * --shell_xfixes_cursor_get_default () -+shell_xfixes_cursor_get_for_stage (ClutterStage *stage) - { -- static ShellXFixesCursor *instance = NULL; -+ ShellXFixesCursor *instance; -+ static GQuark xfixes_cursor_quark; -+ -+ if (G_UNLIKELY (xfixes_cursor_quark == 0)) -+ xfixes_cursor_quark = g_quark_from_static_string ("gnome-shelll::xfixes-cursor"); -+ -+ instance = g_object_get_qdata (G_OBJECT (stage), xfixes_cursor_quark); - - if (instance == NULL) -- instance = g_object_new (SHELL_TYPE_XFIXES_CURSOR, -- "stage", clutter_stage_get_default (), -- NULL); -+ { -+ instance = g_object_new (SHELL_TYPE_XFIXES_CURSOR, -+ "stage", stage, -+ NULL); -+ g_object_set_qdata (G_OBJECT (stage), xfixes_cursor_quark, instance); -+ } - - return instance; - } -diff --git a/src/shell-xfixes-cursor.h b/src/shell-xfixes-cursor.h -index 28af3d1..d84d5aa 100644 ---- a/src/shell-xfixes-cursor.h -+++ b/src/shell-xfixes-cursor.h -@@ -19,7 +19,7 @@ typedef struct _ShellXFixesCursorClass ShellXFixesCursorClass; - - GType shell_xfixes_cursor_get_type (void) G_GNUC_CONST; - --ShellXFixesCursor *shell_xfixes_cursor_get_default (void); -+ShellXFixesCursor *shell_xfixes_cursor_get_for_stage (ClutterStage *stage); - - void shell_xfixes_cursor_show (ShellXFixesCursor *xfixes_cursor); - void shell_xfixes_cursor_hide (ShellXFixesCursor *xfixes_cursor); -diff --git a/src/st/test-theme.c b/src/st/test-theme.c -index db7f747..73dbc93 100644 ---- a/src/st/test-theme.c -+++ b/src/st/test-theme.c -@@ -432,7 +432,7 @@ main (int argc, char **argv) - theme = st_theme_new ("st/test-theme.css", - NULL, NULL); - -- stage = clutter_stage_get_default (); -+ stage = clutter_stage_new (); - context = st_theme_context_get_for_stage (CLUTTER_STAGE (stage)); - st_theme_context_set_theme (context, theme); - st_theme_context_set_resolution (context, 96.); -diff --git a/src/test-recorder.c b/src/test-recorder.c -index e443322..266edf9 100644 ---- a/src/test-recorder.c -+++ b/src/test-recorder.c -@@ -36,7 +36,7 @@ int main (int argc, char **argv) - clutter_color_from_string (&red, "red"); - clutter_color_from_string (&green, "green"); - clutter_color_from_string (&blue, "blue"); -- stage = clutter_stage_get_default (); -+ stage = clutter_stage_new (); - - text = g_object_new (CLUTTER_TYPE_TEXT, - "text", "Red", --- -1.7.7.3 diff --git a/gnome-shell.changes b/gnome-shell.changes index 1d29de6..df2caea 100644 --- a/gnome-shell.changes +++ b/gnome-shell.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Dec 12 10:38:43 UTC 2011 - vuntz@opensuse.org + +- Drop gnome-shell-clutter-1.10.patch: this actually breaks + gnome-shell as we need a clutter patch too, which is not ready + yet. + ------------------------------------------------------------------- Tue Nov 22 19:51:50 UTC 2011 - dimstar@opensuse.org diff --git a/gnome-shell.spec b/gnome-shell.spec index c03bbad..9de63e8 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -25,8 +25,6 @@ Summary: GNOME Shell Group: System/GUI/GNOME Url: http://live.gnome.org/GnomeShell Source: http://download.gnome.org/sources/gnome-shell/3.3/%{name}-%{version}.tar.bz2 -# PATCH-FIX-UPSTREAM gnome-shell-clutter-1.10.patch bgo#664052 dimstar@opensuse.org -- Fix build with clutter 1.10 -Patch0: gnome-shell-clutter-1.10.patch BuildRequires: intltool BuildRequires: translation-update-upstream BuildRequires: update-desktop-files @@ -115,7 +113,6 @@ to enable, disable and install them. %lang_package %prep %setup -q -%patch0 -p1 translation-update-upstream %build