From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1R9p1t-0000D3-9Q for garchives@archives.gentoo.org; Sat, 01 Oct 2011 02:10:17 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D561821C094; Sat, 1 Oct 2011 02:10:06 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 99EBA21C094 for ; Sat, 1 Oct 2011 02:10:06 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id BACC01B400B for ; Sat, 1 Oct 2011 02:10:05 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 1E79780048 for ; Sat, 1 Oct 2011 02:10:05 +0000 (UTC) From: "Alexandre Restovtsev" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Alexandre Restovtsev" Message-ID: Subject: [gentoo-commits] proj/gnome:gnome-next commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/ X-VCS-Repository: proj/gnome X-VCS-Files: gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpointer-multimonitor.patch gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-coglhandle.patch gnome-base/gnome-shell/files/gnome-shell-3.2.0-st-texture-cache-non-serialized-icons.patch gnome-base/gnome-shell/gnome-shell-3.2.0-r1.ebuild gnome-base/gnome-shell/gnome-shell-3.2.0.ebuild X-VCS-Directories: gnome-base/gnome-shell/ gnome-base/gnome-shell/files/ X-VCS-Committer: tetromino X-VCS-Committer-Name: Alexandre Restovtsev X-VCS-Revision: e74deb455b878a6cdc0d179aa53d36fc8cea9013 Date: Sat, 1 Oct 2011 02:10:05 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: e702504d30be5b305d0ec368c0b198d4 commit: e74deb455b878a6cdc0d179aa53d36fc8cea9013 Author: Alexandre Rostovtsev gmail com> AuthorDate: Sat Oct 1 00:29:38 2011 +0000 Commit: Alexandre Restovtsev gmail com> CommitDate: Sat Oct 1 00:29:38 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gnome.git;a=3D= commit;h=3De74deb45 gnome-base/gnome-shell: add various patches Add upstream patches to fix multimonitor behavior, to make the shell recorder actually work, and to not cache unequal icons to the same texture. --- ...gnome-shell-3.2.0-boxpointer-multimonitor.patch | 81 ++++++++++++++= ++++++ .../gnome-shell-3.2.0-recorder-coglhandle.patch | 41 ++++++++++ ...2.0-st-texture-cache-non-serialized-icons.patch | 47 +++++++++++ ...ll-3.2.0.ebuild =3D> gnome-shell-3.2.0-r1.ebuild} | 13 +++- 4 files changed, 181 insertions(+), 1 deletions(-) diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpointer-mu= ltimonitor.patch b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpoin= ter-multimonitor.patch new file mode 100644 index 0000000..4d8497c --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpointer-multimoni= tor.patch @@ -0,0 +1,81 @@ +From 7a8a189c483b48de581c490a44d69030ba7a6923 Mon Sep 17 00:00:00 2001 +From: Jasper St. Pierre +Date: Thu, 22 Sep 2011 19:52:58 +0000 +Subject: boxpointer: Don't constrain box pointer to primary monitor + +A boxPointer should be able to be attached to any actor, not just ones o= n the +primary monitor. Assume that the sourceActor doesn't straddle monitors, = and +constrain the boxPointer to the monitor the sourceActor is on. + +https://bugzilla.gnome.org/show_bug.cgi?id=3D659861 +--- +diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js +index 1523ef6..979e2d1 100644 +--- a/js/ui/boxpointer.js ++++ b/js/ui/boxpointer.js +@@ -329,7 +329,7 @@ BoxPointer.prototype =3D { + // We also want to keep it onscreen, and separated from the + // edge by the same distance as the main part of the box is + // separated from its sourceActor +- let primary =3D Main.layoutManager.primaryMonitor; ++ let monitor =3D Main.layoutManager.findMonitorForActor(sourceAc= tor); + let themeNode =3D this.actor.get_theme_node(); + let borderWidth =3D themeNode.get_length('-arrow-border-width')= ; + let arrowBase =3D themeNode.get_length('-arrow-base'); +@@ -364,8 +364,8 @@ BoxPointer.prototype =3D { + case St.Side.BOTTOM: + resX =3D sourceCenterX - (halfMargin + (natWidth - margin) = * alignment); +=20 +- resX =3D Math.max(resX, primary.x + 10); +- resX =3D Math.min(resX, primary.x + primary.width - (10 + n= atWidth)); ++ resX =3D Math.max(resX, monitor.x + 10); ++ resX =3D Math.min(resX, monitor.x + monitor.width - (10 + n= atWidth)); + this.setArrowOrigin(sourceCenterX - resX); + break; +=20 +@@ -373,8 +373,8 @@ BoxPointer.prototype =3D { + case St.Side.RIGHT: + resY =3D sourceCenterY - (halfMargin + (natHeight - margin)= * alignment); +=20 +- resY =3D Math.max(resY, primary.y + 10); +- resY =3D Math.min(resY, primary.y + primary.height - (10 + = natHeight)); ++ resY =3D Math.max(resY, monitor.y + 10); ++ resY =3D Math.min(resY, monitor.y + monitor.height - (10 + = natHeight)); +=20 + this.setArrowOrigin(sourceCenterY - resY); + break; +diff --git a/js/ui/layout.js b/js/ui/layout.js +index d473ae0..f21fcca 100644 +--- a/js/ui/layout.js ++++ b/js/ui/layout.js +@@ -369,6 +369,10 @@ LayoutManager.prototype =3D { + // Removes @actor from the chrome + removeChrome: function(actor) { + this._chrome.removeActor(actor); ++ }, ++ ++ findMonitorForActor: function(actor) { ++ return this._chrome.findMonitorForActor(actor); + } + }; + Signals.addSignalMethods(LayoutManager.prototype); +@@ -700,7 +704,7 @@ Chrome.prototype =3D { + else if (this._inOverview) + visible =3D true; + else if (!actorData.visibleInFullscreen && +- this._findMonitorForActor(actorData.actor).inFulls= creen) ++ this.findMonitorForActor(actorData.actor).inFullsc= reen) + visible =3D false; + else + visible =3D true; +@@ -762,7 +766,7 @@ Chrome.prototype =3D { +=20 + // This call guarantees that we return some monitor to simplify usa= ge of it + // In practice all tracked actors should be visible on some monitor= anyway +- _findMonitorForActor: function(actor) { ++ findMonitorForActor: function(actor) { + let [x, y] =3D actor.get_transformed_position(); + let [w, h] =3D actor.get_transformed_size(); + let monitor =3D this._findMonitorForRect(x, y, w, h); +-- +cgit v0.9.0.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-cogl= handle.patch b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-co= glhandle.patch new file mode 100644 index 0000000..c9d3f41 --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-coglhandle.= patch @@ -0,0 +1,41 @@ +From 4e9e91fdce7b887bc2fea99b36b6fad4a5cea2c6 Mon Sep 17 00:00:00 2001 +From: Florian M=C3=BCllner +Date: Wed, 21 Sep 2011 22:58:08 +0000 +Subject: recorder: Use CoglHandle instead of CoglHandle* + +The latter has always been wrong and should have been fixed a +while ago, but somehow we overlooked shell-recorder. + +https://bugzilla.gnome.org/show_bug.cgi?id=3D659822 +--- +diff --git a/src/shell-recorder.c b/src/shell-recorder.c +index 9df14d3..a624389 100644 +--- a/src/shell-recorder.c ++++ b/src/shell-recorder.c +@@ -54,7 +54,7 @@ struct _ShellRecorder { + gboolean have_xfixes; + int xfixes_event_base; +=20 +- CoglHandle *recording_icon; /* icon shown while playing */ ++ CoglHandle recording_icon; /* icon shown while playing */ +=20 + cairo_surface_t *cursor_image; + int cursor_hot_x; +@@ -160,13 +160,13 @@ G_DEFINE_TYPE(ShellRecorder, shell_recorder, G_TYP= E_OBJECT); + * recording. The emblem is drawn *after* we record the frame so doesn'= t + * show up in the frame. + */ +-static CoglHandle * ++static CoglHandle + create_recording_icon (void) + { + cairo_surface_t *surface =3D cairo_image_surface_create (CAIRO_FORMAT= _ARGB32, 32, 32); + cairo_t *cr; + cairo_pattern_t *pat; +- CoglHandle *texture; ++ CoglHandle texture; +=20 + cr =3D cairo_create (surface); +=20 +-- +cgit v0.9.0.2 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-st-texture-ca= che-non-serialized-icons.patch b/gnome-base/gnome-shell/files/gnome-shell= -3.2.0-st-texture-cache-non-serialized-icons.patch new file mode 100644 index 0000000..73b51da --- /dev/null +++ b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-st-texture-cache-non= -serialized-icons.patch @@ -0,0 +1,47 @@ +From e49a595f54b14d681ad01c8da1886ff659080e10 Mon Sep 17 00:00:00 2001 +From: Florian M=C3=BCllner +Date: Fri, 30 Sep 2011 17:57:09 +0000 +Subject: st-texture-cache: Don't cache GIcons which cannot be serialized + +For GIcons we use g_icon_to_string() in the key, but the function +will return NULL if the icon cannot be serialized. As a result, +all non-serializable GIcons of the same size end up with the same +cache key - an example for this are contacts with avatars, which +currently all end up with the same image. +To fix, opt out of caching for GIcons which cannot be serialized. + +https://bugzilla.gnome.org/show_bug.cgi?id=3D660585 +--- +diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c +index 24471bc..1e83a0d 100644 +--- a/src/st/st-texture-cache.c ++++ b/src/st/st-texture-cache.c +@@ -1177,8 +1177,15 @@ load_gicon_with_colors (StTextureCache *cache, + char *key; + GtkIconTheme *theme; + GtkIconInfo *info; ++ StTextureCachePolicy policy; +=20 + gicon_string =3D g_icon_to_string (icon); ++ /* A return value of NULL indicates that the icon can not be serializ= ed, ++ * so don't have a unique identifier for it as a cache key, and thus = can't ++ * be cached. If it is cachable, we hardcode a policy of FOREVER here= for ++ * now; we should actually blow this away on icon theme changes proba= bly */ ++ policy =3D gicon_string !=3D NULL ? ST_TEXTURE_CACHE_POLICY_FOREVER ++ : ST_TEXTURE_CACHE_POLICY_NONE; + if (colors) + { + /* This raises some doubts about the practice of using string key= s */ +@@ -1210,9 +1217,7 @@ load_gicon_with_colors (StTextureCache *cache, + { + /* Transfer ownership of key */ + request->key =3D key; +- /* hardcoded here for now; we should actually blow this away on +- * icon theme changes probably */ +- request->policy =3D ST_TEXTURE_CACHE_POLICY_FOREVER; ++ request->policy =3D policy; + request->icon =3D g_object_ref (icon); + request->icon_info =3D info; + request->width =3D request->height =3D size; +-- +cgit v0.9.0.2 diff --git a/gnome-base/gnome-shell/gnome-shell-3.2.0.ebuild b/gnome-base= /gnome-shell/gnome-shell-3.2.0-r1.ebuild similarity index 90% rename from gnome-base/gnome-shell/gnome-shell-3.2.0.ebuild rename to gnome-base/gnome-shell/gnome-shell-3.2.0-r1.ebuild index 3aaed7a..186d8e6 100644 --- a/gnome-base/gnome-shell/gnome-shell-3.2.0.ebuild +++ b/gnome-base/gnome-shell/gnome-shell-3.2.0-r1.ebuild @@ -8,7 +8,7 @@ GCONF_DEBUG=3D"no" GNOME2_LA_PUNT=3D"yes" PYTHON_DEPEND=3D"2:2.5" =20 -inherit gnome2 python +inherit eutils gnome2 python if [[ ${PV} =3D 9999 ]]; then inherit gnome2-live fi @@ -113,9 +113,20 @@ pkg_setup() { BROWSER_PLUGIN_DIR=3D${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins" } =20 +src_prepare() { + gnome2_src_prepare + # Fix recording; will be in next release + epatch "${FILESDIR}/${P}-recorder-coglhandle.patch" + # Fix multimonitor behavior; will be in next release + epatch "${FILESDIR}/${P}-boxpointer-multimonitor.patch" + # Fix different icons being cached identically; will be in next release + epatch "${FILESDIR}/${P}-st-texture-cache-non-serialized-icons.patch" +} + src_install() { gnome2_src_install python_convert_shebangs 2 "${D}"/usr/bin/gnome-shell-extension-tool + } =20 pkg_postinst() {