r36518 - in /desktop/experimental/gnome-shell/debian: ./ patches/

sjoerd at users.alioth.debian.org sjoerd at users.alioth.debian.org
Fri Jan 4 21:13:27 UTC 2013


Author: sjoerd
Date: Fri Jan  4 21:13:26 2013
New Revision: 36518

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=36518
Log:
* debian/control.in: Build-depend on recent telepathy-logger which contains
  various fixes for gnome-shell usage
* d/p/40-shell-recorder-src-Set-frame-duration.patch:
   + Added. Correctly set the duration on the frames to create a correct webm
     file (from upstream git, bgo#688487))
* d/p/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch:
  + Added. Pressing esc while the mouse is down should not make the curtain
    fall, otherwise a gray screen results. (From upstream git, bgo#686800)
* d/p/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch
  d/p/61-MessageTray-restore-opacity-when-expanding-a-notific.patch
  d/p/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch:
  + Added. Various patches to fix the curious case of the disappearing
    message tray (From upstream git, bgo#683986)

Added:
    desktop/experimental/gnome-shell/debian/patches/40-shell-recorder-src-Set-frame-duration.patch
    desktop/experimental/gnome-shell/debian/patches/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch
    desktop/experimental/gnome-shell/debian/patches/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch
    desktop/experimental/gnome-shell/debian/patches/61-MessageTray-restore-opacity-when-expanding-a-notific.patch
    desktop/experimental/gnome-shell/debian/patches/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch
Modified:
    desktop/experimental/gnome-shell/debian/changelog
    desktop/experimental/gnome-shell/debian/control
    desktop/experimental/gnome-shell/debian/control.in
    desktop/experimental/gnome-shell/debian/patches/series

Modified: desktop/experimental/gnome-shell/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/changelog?rev=36518&op=diff
==============================================================================
--- desktop/experimental/gnome-shell/debian/changelog [utf-8] (original)
+++ desktop/experimental/gnome-shell/debian/changelog [utf-8] Fri Jan  4 21:13:26 2013
@@ -1,4 +1,4 @@
-gnome-shell (3.6.2-2) UNRELEASED; urgency=low
+gnome-shell (3.6.2-2) experimental; urgency=low
 
   [ Josselin Mouette ]
   * Recommend gkbd-capplet for gkbd-keyboard-display. Closes: #691731.
@@ -6,7 +6,22 @@
   [ Jeremy Bicha ]
   * debian/control.in: Bump minimum mutter & eds depends
 
- -- Josselin Mouette <joss at debian.org>  Sat, 24 Nov 2012 13:31:12 +0100
+  [ Sjoerd Simons ]
+  * debian/control.in: Build-depend on recent telepathy-logger which contains
+    various fixes for gnome-shell usage
+  * d/p/40-shell-recorder-src-Set-frame-duration.patch:
+     + Added. Correctly set the duration on the frames to create a correct webm
+       file (from upstream git, bgo#688487))
+  * d/p/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch:
+    + Added. Pressing esc while the mouse is down should not make the curtain
+      fall, otherwise a gray screen results. (From upstream git, bgo#686800)
+  * d/p/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch
+    d/p/61-MessageTray-restore-opacity-when-expanding-a-notific.patch
+    d/p/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch:
+    + Added. Various patches to fix the curious case of the disappearing
+      message tray (From upstream git, bgo#683986)
+
+ -- Sjoerd Simons <sjoerd at debian.org>  Fri, 04 Jan 2013 22:12:45 +0100
 
 gnome-shell (3.6.2-1) experimental; urgency=low
 

Modified: desktop/experimental/gnome-shell/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/control?rev=36518&op=diff
==============================================================================
--- desktop/experimental/gnome-shell/debian/control [utf-8] (original)
+++ desktop/experimental/gnome-shell/debian/control [utf-8] Fri Jan  4 21:13:26 2013
@@ -2,6 +2,7 @@
 # 
 # Modifications should be made to debian/control.in instead.
 # This file is regenerated automatically in the clean target.
+
 Source: gnome-shell
 Section: gnome
 Priority: optional
@@ -44,7 +45,7 @@
                libpulse-dev,
                libstartup-notification0-dev (>= 0.11),
                libtelepathy-glib-dev (>= 0.17.5),
-               libtelepathy-logger-dev (>= 0.2.4),
+               libtelepathy-logger-dev (>= 0.6.0-2),
                libx11-dev,
                libxfixes-dev,
                libxml2-dev,

Modified: desktop/experimental/gnome-shell/debian/control.in
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/control.in?rev=36518&op=diff
==============================================================================
--- desktop/experimental/gnome-shell/debian/control.in [utf-8] (original)
+++ desktop/experimental/gnome-shell/debian/control.in [utf-8] Fri Jan  4 21:13:26 2013
@@ -40,7 +40,7 @@
                libpulse-dev,
                libstartup-notification0-dev (>= 0.11),
                libtelepathy-glib-dev (>= 0.17.5),
-               libtelepathy-logger-dev (>= 0.2.4),
+               libtelepathy-logger-dev (>= 0.6.0-2),
                libx11-dev,
                libxfixes-dev,
                libxml2-dev,

Added: desktop/experimental/gnome-shell/debian/patches/40-shell-recorder-src-Set-frame-duration.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/patches/40-shell-recorder-src-Set-frame-duration.patch?rev=36518&op=file
==============================================================================
--- desktop/experimental/gnome-shell/debian/patches/40-shell-recorder-src-Set-frame-duration.patch (added)
+++ desktop/experimental/gnome-shell/debian/patches/40-shell-recorder-src-Set-frame-duration.patch [utf-8] Fri Jan  4 21:13:26 2013
@@ -1,0 +1,73 @@
+From a2b8b969bd15c73e7f6f398138dbf7a8375f5aef Mon Sep 17 00:00:00 2001
+From: Adel Gadllah <adel.gadllah at gmail.com>
+Date: Mon, 19 Nov 2012 18:50:39 +0100
+Subject: [PATCH] shell-recorder-src: Set frame duration
+
+We where not setting a duration for the frames, which caused the resulting videos to
+have a broken header.
+
+Fix that by making the source a live source and setting the correct frame duration.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=688487
+---
+ src/shell-recorder-src.c |   16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/src/shell-recorder-src.c b/src/shell-recorder-src.c
+index 5b52b25..5e325cf 100644
+--- a/src/shell-recorder-src.c
++++ b/src/shell-recorder-src.c
+@@ -14,6 +14,9 @@ struct _ShellRecorderSrc
+   GMutex mutex_data;
+   GMutex *mutex;
+ 
++  GstClock *clock;
++  GstClockTime last_frame_time;
++
+   GstCaps *caps;
+   GAsyncQueue *queue;
+   gboolean closed;
+@@ -41,6 +44,10 @@ static void
+ shell_recorder_src_init (ShellRecorderSrc      *src)
+ {
+   gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
++  gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
++
++  src->clock = gst_system_clock_obtain ();
++  src->last_frame_time = 0;
+ 
+   src->queue = g_async_queue_new ();
+   src->mutex = &src->mutex_data;
+@@ -89,6 +96,10 @@ shell_recorder_src_create (GstPushSrc  *push_src,
+     return GST_FLOW_EOS;
+ 
+   buffer = g_async_queue_pop (src->queue);
++
++  if (src->last_frame_time == 0)
++    src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
++
+   if (buffer == RECORDER_QUEUE_END)
+     {
+       /* Returning UNEXPECTED here will cause a EOS message to be sent */
+@@ -100,6 +111,9 @@ shell_recorder_src_create (GstPushSrc  *push_src,
+ 					 - (int)(gst_buffer_get_size(buffer) / 1024));
+ 
+   *buffer_out = buffer;
++  GST_BUFFER_DURATION(*buffer_out) = GST_CLOCK_DIFF (src->last_frame_time, gst_clock_get_time (GST_CLOCK (src->clock)));
++
++  src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
+ 
+   return GST_FLOW_OK;
+ }
+@@ -141,6 +155,8 @@ shell_recorder_src_finalize (GObject *object)
+ 
+   g_mutex_clear (src->mutex);
+ 
++  gst_object_unref (src->clock);
++
+   G_OBJECT_CLASS (shell_recorder_src_parent_class)->finalize (object);
+ }
+ 
+-- 
+1.7.10.4
+

Added: desktop/experimental/gnome-shell/debian/patches/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/patches/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch?rev=36518&op=file
==============================================================================
--- desktop/experimental/gnome-shell/debian/patches/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch (added)
+++ desktop/experimental/gnome-shell/debian/patches/50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch [utf-8] Fri Jan  4 21:13:26 2013
@@ -1,0 +1,111 @@
+From 4007f5d36e614d18bc388cb9915083d5d2e87ded Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna at src.gnome.org>
+Date: Wed, 24 Oct 2012 17:53:19 +0200
+Subject: [PATCH] Block cancellation of the unlock dialog when dragging
+
+Pressing esc while the mouse is down should not make the curtain fall,
+otherwise a gray screen results.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=686800
+
+Conflicts:
+	js/ui/screenShield.js
+	js/ui/unlockDialog.js
+---
+ js/ui/screenShield.js |   13 ++++++++-----
+ js/ui/unlockDialog.js |    7 +++++--
+ 2 files changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
+index 5b93444..988e191 100644
+--- a/js/ui/screenShield.js
++++ b/js/ui/screenShield.js
+@@ -458,7 +458,7 @@ const ScreenShield = new Lang.Class({
+         if (symbol == Clutter.KEY_Escape ||
+             symbol == Clutter.KEY_Return ||
+             symbol == Clutter.KEY_KP_Enter) {
+-            this._ensureUnlockDialog(true);
++            this._ensureUnlockDialog(true, true);
+             this._hideLockScreen(true);
+             return true;
+         }
+@@ -481,7 +481,7 @@ const ScreenShield = new Lang.Class({
+ 
+         // 7 standard scrolls to lift up
+         if (this._lockScreenScrollCounter > 35) {
+-            this._ensureUnlockDialog(false);
++            this._ensureUnlockDialog(false, true);
+             this._hideLockScreen(true);
+         }
+ 
+@@ -513,13 +513,14 @@ const ScreenShield = new Lang.Class({
+     _onDragBegin: function() {
+         Tweener.removeTweens(this._lockScreenGroup);
+         this._lockScreenState = MessageTray.State.HIDING;
+-        this._ensureUnlockDialog(false);
++        this._ensureUnlockDialog(false, false);
+     },
+ 
+     _onDragEnd: function(action, actor, eventX, eventY, modifiers) {
+         if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
+             // Complete motion automatically
+             this._hideLockScreen(true);
++            this._ensureUnlockDialog(false, true);
+         } else {
+             // restore the lock screen to its original place
+             // try to use the same speed as the normal animation
+@@ -608,7 +609,7 @@ const ScreenShield = new Lang.Class({
+ 
+         this.actor.show();
+         this._isGreeter = Main.sessionMode.isGreeter;
+-        this._ensureUnlockDialog(true);
++        this._ensureUnlockDialog(true, true);
+         this._hideLockScreen(false);
+     },
+ 
+@@ -655,7 +656,7 @@ const ScreenShield = new Lang.Class({
+             Main.sessionMode.popMode('lock-screen');
+     },
+ 
+-    _ensureUnlockDialog: function(onPrimary) {
++    _ensureUnlockDialog: function(onPrimary, allowCancel) {
+         if (!this._dialog) {
+             let constructor = Main.sessionMode.unlockDialog;
+             if (!constructor) {
+@@ -678,6 +679,8 @@ const ScreenShield = new Lang.Class({
+             this._dialog.connect('failed', Lang.bind(this, this._onUnlockFailed));
+             this._dialog.connect('unlocked', Lang.bind(this, this._onUnlockSucceded));
+         }
++
++        this._dialog.allowCancel = allowCancel;
+     },
+ 
+     _onUnlockFailed: function() {
+diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
+index 52ef50c..90fa9f3 100644
+--- a/js/ui/unlockDialog.js
++++ b/js/ui/unlockDialog.js
+@@ -164,6 +164,7 @@ const UnlockDialog = new Lang.Class({
+         this._promptLoginHint.hide();
+         this.contentLayout.add_actor(this._promptLoginHint);
+ 
++        this.allowCancel = false;
+         let cancelButton = { label: _("Cancel"),
+                              action: Lang.bind(this, this._escape),
+                              key: Clutter.KEY_Escape };
+@@ -291,8 +292,10 @@ const UnlockDialog = new Lang.Class({
+     },
+ 
+     _escape: function() {
+-        this._userVerifier.cancel();
+-        this.emit('failed');
++        if (this.allowCancel) {
++            this._userVerifier.cancel();
++            this.emit('failed');
++        }
+     },
+ 
+     _otherUserClicked: function(button, event) {
+-- 
+1.7.10.4
+

Added: desktop/experimental/gnome-shell/debian/patches/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/patches/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch?rev=36518&op=file
==============================================================================
--- desktop/experimental/gnome-shell/debian/patches/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch (added)
+++ desktop/experimental/gnome-shell/debian/patches/60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch [utf-8] Fri Jan  4 21:13:26 2013
@@ -1,0 +1,40 @@
+From caacf857fb22278016c21373a5936a236585e731 Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna at src.gnome.org>
+Date: Tue, 11 Sep 2012 00:44:28 +0200
+Subject: [PATCH 1/3] MessageTray: fix reentrancy when calling out to the grab
+ helper
+
+Similar to 683546. I'm not sure where this bug lives, but let's make
+the code robust.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=683986
+---
+ js/ui/messageTray.js |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
+index c213e92..71ebb29 100644
+--- a/js/ui/messageTray.js
++++ b/js/ui/messageTray.js
+@@ -2277,6 +2277,18 @@ const MessageTray = new Lang.Class({
+     },
+ 
+     _hideNotification: function() {
++        // HACK!
++        // There seems to be a reentrancy issue in calling .ungrab() here,
++        // which causes _updateState to be called before _notificationState
++        // becomes HIDING. That hides the notification again, nullifying the
++        // object but not setting _notificationState (and that's the weird part)
++        // As then _notificationState is stuck into SHOWN but _notification
++        // is null, every new _updateState fails and the message tray is
++        // lost forever.
++        //
++        // See more at https://bugzilla.gnome.org/show_bug.cgi?id=683986
++        this._notificationState = State.HIDING;
++
+         this._grabHelper.ungrab({ actor: this._notification.actor });
+ 
+         if (this._notificationExpandedId) {
+-- 
+1.7.10.4
+

Added: desktop/experimental/gnome-shell/debian/patches/61-MessageTray-restore-opacity-when-expanding-a-notific.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/patches/61-MessageTray-restore-opacity-when-expanding-a-notific.patch?rev=36518&op=file
==============================================================================
--- desktop/experimental/gnome-shell/debian/patches/61-MessageTray-restore-opacity-when-expanding-a-notific.patch (added)
+++ desktop/experimental/gnome-shell/debian/patches/61-MessageTray-restore-opacity-when-expanding-a-notific.patch [utf-8] Fri Jan  4 21:13:26 2013
@@ -1,0 +1,39 @@
+From e8fbaf028c47762d68be981b7ad20a5e81e5ae14 Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna at src.gnome.org>
+Date: Mon, 19 Nov 2012 18:59:39 +0100
+Subject: [PATCH 2/3] MessageTray: restore opacity when expanding a
+ notification
+
+MessageTray tweens both opacity and y to hide or show _notificationWidget,
+but only y when expanding it. This means that an existing tween to hide
+the notification will continue running, clearing the notification state.
+If the hiding one completes before the showing one, the onComplete handler
+will throw an exception (because the notification was nullified) and
+therefore break the state tracking.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=683986
+---
+ js/ui/messageTray.js |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
+index 71ebb29..7079c19 100644
+--- a/js/ui/messageTray.js
++++ b/js/ui/messageTray.js
+@@ -2353,8 +2353,13 @@ const MessageTray = new Lang.Class({
+         if (this._notificationWidget.y < expandedY) {
+             this._notificationWidget.y = expandedY;
+         } else if (this._notification.y != expandedY) {
++            // Tween also opacity here, to override a possible tween that's
++            // currently hiding the notification. This will ensure that the
++            // notification is not removed when the onComplete handler for this
++            // one triggers.
+             this._tween(this._notificationWidget, '_notificationState', State.SHOWN,
+                         { y: expandedY,
++                          opacity: 255,
+                           time: ANIMATION_TIME,
+                           transition: 'easeOutQuad'
+                         });
+-- 
+1.7.10.4
+

Added: desktop/experimental/gnome-shell/debian/patches/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/patches/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch?rev=36518&op=file
==============================================================================
--- desktop/experimental/gnome-shell/debian/patches/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch (added)
+++ desktop/experimental/gnome-shell/debian/patches/62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch [utf-8] Fri Jan  4 21:13:26 2013
@@ -1,0 +1,31 @@
+From 40b2f203bb0691f45d024c6bf59433cdb5712160 Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna at src.gnome.org>
+Date: Sun, 25 Nov 2012 23:51:44 +0100
+Subject: [PATCH 3/3] MessageTray: remove all tweens when tweening for state
+ parameters
+
+MessageTray._tween sets the state variable to the in-progress value,
+so it must be sure that at the end of the animation the value will
+be the corresponding final and nothing else will happen in between.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=683986
+---
+ js/ui/messageTray.js |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
+index 7079c19..e36f499 100644
+--- a/js/ui/messageTray.js
++++ b/js/ui/messageTray.js
+@@ -2051,6 +2051,8 @@ const MessageTray = new Lang.Class({
+         params.onCompleteScope = this;
+         params.onCompleteParams = [statevar, value, onComplete, onCompleteScope, onCompleteParams];
+ 
++        // Remove other tweens that could mess with the state machine
++        Tweener.removeTweens(actor);
+         Tweener.addTween(actor, params);
+ 
+         let valuing = (value == State.SHOWN) ? State.SHOWING : State.HIDING;
+-- 
+1.7.10.4
+

Modified: desktop/experimental/gnome-shell/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-shell/debian/patches/series?rev=36518&op=diff
==============================================================================
--- desktop/experimental/gnome-shell/debian/patches/series [utf-8] (original)
+++ desktop/experimental/gnome-shell/debian/patches/series [utf-8] Fri Jan  4 21:13:26 2013
@@ -4,3 +4,8 @@
 27-nm-libexec-path.patch
 29-Cope-with-clutter-being-built-with-both-new-and-old-.patch
 30-remoteMenu-Prevent-the-shell-from-becoming-unrespons.patch
+40-shell-recorder-src-Set-frame-duration.patch
+50-Block-cancellation-of-the-unlock-dialog-when-draggin.patch
+60-MessageTray-fix-reentrancy-when-calling-out-to-the-g.patch
+61-MessageTray-restore-opacity-when-expanding-a-notific.patch
+62-MessageTray-remove-all-tweens-when-tweening-for-stat.patch




More information about the pkg-gnome-commits mailing list