From b81ddcb6e39e09b4ad8c15cc02364fa5b8950ba0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 3 May 2010 10:17:51 +0000 Subject: [PATCH] - Update to new upstream stable 1.2.6 release, add 3 patches for gnome-shell issues --- .cvsignore | 1 + ...dle_event-from-clutter_x11_handle_ev.patch | 53 +++++++++++++++++++ ...re-unexpected-GLX_BufferSwapComplete.patch | 41 ++++++++++++++ Use-a-native-format-for-atlas-textures.patch | 51 ++++++++++++++++++ clutter.spec | 19 ++++++- sources | 1 + 6 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 Call-backend-handle_event-from-clutter_x11_handle_ev.patch create mode 100644 Ignore-unexpected-GLX_BufferSwapComplete.patch create mode 100644 Use-a-native-format-for-atlas-textures.patch diff --git a/.cvsignore b/.cvsignore index 9de2686..374c686 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1,2 @@ clutter-1.2.4.tar.bz2 +clutter-1.2.6.tar.bz2 diff --git a/Call-backend-handle_event-from-clutter_x11_handle_ev.patch b/Call-backend-handle_event-from-clutter_x11_handle_ev.patch new file mode 100644 index 0000000..30d0176 --- /dev/null +++ b/Call-backend-handle_event-from-clutter_x11_handle_ev.patch @@ -0,0 +1,53 @@ +From 0db0c1925b691d195fd779ef6e6d851d2135d790 Mon Sep 17 00:00:00 2001 +From: Owen W. Taylor +Date: Fri, 30 Apr 2010 14:50:11 -0400 +Subject: [PATCH 2/3] Call backend handle_event from clutter_x11_handle_event() + +Whether events come from the main loop source or from +clutter_x11_handle_event(), we need to feed them to the backend +virtual handle_event function. This fixes problems with clients +using clutter_x11_handle_event() hanging because +GLXBufferSwapComplete events aren't received. + +http://bugzilla.openedhand.com/show_bug.cgi?id=2101 +--- + clutter/x11/clutter-event-x11.c | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +diff --git a/clutter/x11/clutter-event-x11.c b/clutter/x11/clutter-event-x11.c +index 0d8c08d..20a77fd 100644 +--- a/clutter/x11/clutter-event-x11.c ++++ b/clutter/x11/clutter-event-x11.c +@@ -1048,13 +1048,14 @@ ClutterX11FilterReturn + clutter_x11_handle_event (XEvent *xevent) + { + ClutterBackend *backend; ++ ClutterBackendX11Class *backend_x11_class; + ClutterEvent *event; + ClutterMainContext *clutter_context; + ClutterX11FilterReturn result; + gint spin = 1; + + /* The return values here are someone approximate; we return +- * CLUTTER_X11_FILTER_REMOVE if and only if a clutter event is ++ * CLUTTER_X11_FILTER_REMOVE if a clutter event is + * generated for the event. This mostly, but not entirely, + * corresponds to whether other event processing should be + * excluded. As long as the stage window is not shared with another +@@ -1068,6 +1069,13 @@ clutter_x11_handle_event (XEvent *xevent) + + clutter_context = _clutter_context_get_default (); + backend = clutter_context->backend; ++ backend_x11_class = CLUTTER_BACKEND_X11_GET_CLASS (backend); ++ ++ /* If the backend just observed the event and didn't want it ++ * removed it could return FALSE, so assume that a TRUE return ++ * means that our caller should also do no further processing. */ ++ if (backend_x11_class->handle_event (CLUTTER_BACKEND_X11(backend), xevent)) ++ return CLUTTER_X11_FILTER_REMOVE; + + event = clutter_event_new (CLUTTER_NOTHING); + +-- +1.7.0.1 + diff --git a/Ignore-unexpected-GLX_BufferSwapComplete.patch b/Ignore-unexpected-GLX_BufferSwapComplete.patch new file mode 100644 index 0000000..7a72ab1 --- /dev/null +++ b/Ignore-unexpected-GLX_BufferSwapComplete.patch @@ -0,0 +1,41 @@ +From 0fca6056aa9f9f609836330597bd0139bf0be2c4 Mon Sep 17 00:00:00 2001 +From: Owen W. Taylor +Date: Fri, 30 Apr 2010 14:56:07 -0400 +Subject: [PATCH 3/3] Ignore unexpected GLX_BufferSwapComplete + +A server that supports GLX_BufferSwapComplete will always send +these events, so we should just silently ignore them if we've +chosen not to take advantage of the INTEL_swap_event GLX +extension. + +http://bugzilla.openedhand.com/show_bug.cgi?id=2102 +--- + clutter/glx/clutter-event-glx.c | 11 ++++------- + 1 files changed, 4 insertions(+), 7 deletions(-) + +diff --git a/clutter/glx/clutter-event-glx.c b/clutter/glx/clutter-event-glx.c +index 2034534..27b1d2b 100644 +--- a/clutter/glx/clutter-event-glx.c ++++ b/clutter/glx/clutter-event-glx.c +@@ -82,14 +82,11 @@ clutter_backend_glx_handle_event (ClutterBackendX11 *backend_x11, + + if (stage_x11->xwin == swap_complete_event->drawable) + { +- if (G_UNLIKELY (stage_glx->pending_swaps == 0)) +- { +- g_warning ("Spurious GLX_BufferSwapComplete event received for " +- "stage drawable = 0x%08lx", +- swap_complete_event->drawable); +- } +- else ++ /* We don't have to select for swap events, so we'll ++ * get them even if we are choosing not to use them */ ++ if (stage_glx->pending_swaps > 0) + stage_glx->pending_swaps--; ++ + return TRUE; + } + } +-- +1.7.0.1 + diff --git a/Use-a-native-format-for-atlas-textures.patch b/Use-a-native-format-for-atlas-textures.patch new file mode 100644 index 0000000..ebceb86 --- /dev/null +++ b/Use-a-native-format-for-atlas-textures.patch @@ -0,0 +1,51 @@ +From e23cfbb2f0b9e52154401cb96118085811b62f09 Mon Sep 17 00:00:00 2001 +From: Owen Taylor +Date: Thu, 29 Apr 2010 19:47:56 -0400 +Subject: [PATCH 1/3] Use a native format for atlas textures + +Since we create frame buffer objects for atlas textures, we should use +a format that can be used as a rendering target. For this reason, use +an internal format of ARGB instead of RGBA when creating the texture. + +(We don't actually render to it, but the Radeon Mesa drivers aren't +sophisticated enough to deal with a FBO that can be read from but +can't be rendered to. On other hardware, this is probably pretty much +neutral for efficiency.) + +http://bugzilla.openedhand.com/show_bug.cgi?id=2100 +--- + clutter/cogl/cogl/cogl-atlas-texture.c | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) + +diff --git a/clutter/cogl/cogl/cogl-atlas-texture.c b/clutter/cogl/cogl/cogl-atlas-texture.c +index b9219e4..3fafb58 100644 +--- a/clutter/cogl/cogl/cogl-atlas-texture.c ++++ b/clutter/cogl/cogl/cogl-atlas-texture.c +@@ -70,6 +70,15 @@ + #define GL_FRAMEBUFFER_COMPLETE 0x8CD5 + #endif + ++/* Best guess at native frame buffer formats; using these makes the ++ * Mesa framebuffer support happier on Radeon cards that can't ++ * render to arbitrarily ordered pixels */ ++#if G_BYTE_ORDER == G_LITTLE_ENDIAN ++#define NATIVE_PIXEL_FORMAT COGL_PIXEL_FORMAT_BGRA_8888_PRE ++#else ++#define NATIVE_PIXEL_FORMAT COGL_PIXEL_FORMAT_ARGB_8888_PRE ++#endif ++ + static void _cogl_atlas_texture_free (CoglAtlasTexture *sub_tex); + + COGL_HANDLE_DEFINE (AtlasTexture, atlas_texture); +@@ -868,7 +877,7 @@ _cogl_atlas_texture_reserve_space (CoglAtlasTexture *new_sub_tex, + _cogl_texture_2d_new_with_size (_cogl_atlas_get_width (new_atlas), + _cogl_atlas_get_height (new_atlas), + COGL_TEXTURE_NONE, +- COGL_PIXEL_FORMAT_RGBA_8888)) == ++ NATIVE_PIXEL_FORMAT)) == + COGL_INVALID_HANDLE) + { + COGL_NOTE (ATLAS, "Could not create a CoglTexture2D"); +-- +1.7.0.1 + diff --git a/clutter.spec b/clutter.spec index 2a46613..7362c16 100644 --- a/clutter.spec +++ b/clutter.spec @@ -1,5 +1,5 @@ Name: clutter -Version: 1.2.4 +Version: 1.2.6 Release: 1%{?dist} Summary: Open Source software library for creating rich graphical user interfaces @@ -10,6 +10,13 @@ URL: http://www.clutter-project.org/ Source0: http://www.clutter-project.org/sources/%{name}/1.0/%{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +# http://bugzilla.openedhand.com/show_bug.cgi?id=2100 +Patch0: Use-a-native-format-for-atlas-textures.patch +# http://bugzilla.openedhand.com/show_bug.cgi?id=2101 +Patch1: Call-backend-handle_event-from-clutter_x11_handle_ev.patch +# http://bugzilla.openedhand.com/show_bug.cgi?id=2102 +Patch2: Ignore-unexpected-GLX_BufferSwapComplete.patch + Requires: gobject-introspection # FIXME to remove when all the bits have been merged into their # libraries @@ -59,6 +66,10 @@ This package contains documentation for clutter. %prep %setup -q +%patch0 -p1 -b .atlas-textures +%patch1 -p1 -b .handle-event +%patch2 -p1 -b .buffer-swap-complete + %build %configure --enable-gtk-doc --enable-introspection --enable-xinput make %{?_smp_mflags} V=1 @@ -98,6 +109,12 @@ rm -rf %{buildroot} %{_datadir}/gtk-doc/html/cogl %changelog +* Fri Apr 30 2010 Owen Taylor - 1.2.6-1 +- Update to new upstream stable 1.2.6 release +- Work around Radeon driver problem with color channel confusion. +- Fix Mutter not seeing BufferSwapComplete events and freezing +- Remove incorrect warning message about BufferSwapComplete events + * Tue Mar 20 2010 Peter Robinson 1.2.4-1 - Update to new upstream stable 1.2.4 release diff --git a/sources b/sources index 2aece0d..4ba6520 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ 3800dcc825e25d58e7ef93de26cd9759 clutter-1.2.4.tar.bz2 +eba5af33e966d9c9b0caab7d9e019f0d clutter-1.2.6.tar.bz2