Browse Source

update to 3.0.2, drop most patches that are included

Ionuț Mircea Bîru 14 years ago
parent
commit
00b7901e6e

+ 0 - 31
0001-Don-t-crash-when-removing-nameless-user.patch

@@ -1,31 +0,0 @@
-From 8977ba4f23aef8754c0a912e7e1ec46f8da4776e Mon Sep 17 00:00:00 2001
-From: Ionut Biru <ibiru@archlinux.org>
-Date: Mon, 9 May 2011 13:03:17 -0700
-Subject: [PATCH] Don't crash when removing nameless user
-
-Fixes https://bugzilla.gnome.org/show_bug.cgi?id=647893
-
-Signed-off-by: Ionut Biru <ibiru@archlinux.org>
----
- src/gdmuser/gdm-user-manager.c |    5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-diff --git a/src/gdmuser/gdm-user-manager.c b/src/gdmuser/gdm-user-manager.c
-index eba9da1..543fcc3 100644
---- a/src/gdmuser/gdm-user-manager.c
-+++ b/src/gdmuser/gdm-user-manager.c
-@@ -777,7 +777,10 @@ remove_user (GdmUserManager *manager,
-         if (gdm_user_get_object_path (user) != NULL) {
-                 g_hash_table_remove (manager->priv->users_by_object_path, gdm_user_get_object_path (user));
-         }
--        g_hash_table_remove (manager->priv->users_by_name, gdm_user_get_user_name (user));
-+
-+        if (gdm_user_get_user_name (user) != NULL) {
-+            g_hash_table_remove (manager->priv->users_by_name, gdm_user_get_user_name (user));
-+        }
- 
-         if (manager->priv->is_loaded) {
-                 g_signal_emit (manager, signals[USER_REMOVED], 0, user);
--- 
-1.7.5.1
-

+ 9 - 18
PKGBUILD

@@ -2,8 +2,8 @@
 # Contributor: Flamelab <panosfilip@gmail.com
 
 pkgname=gnome-shell
-pkgver=3.0.1
-pkgrel=5
+pkgver=3.0.2
+pkgrel=1
 pkgdesc="The next generation GNOME Shell"
 arch=('i686' 'x86_64')
 url="http://live.gnome.org/GnomeShell"
@@ -18,28 +18,19 @@ install=gnome-shell.install
 groups=(gnome)
 source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2
         arch.patch
-        network_fixes_up_to_5090a4ccce.patch
-        shell-xfixes-cursor_missing_free.patch
-        st-private_fix_memory_leak.patch
-        st-private_correct_fix_memory_leak.patch
-        0001-Don-t-crash-when-removing-nameless-user.patch)
-sha256sums=('01f7ae942ba9687a5e67d62423843ed404d77b35f74acc212a5f391beed8e079'
+        bluetoothstatus-always-update-devices.patch
+        shell-recorder-missing-XFree.patch)
+sha256sums=('a44963877da895d9b9f1ea98617067c5e88a5c4b414c6ccf0fcbfacdeac7db95'
             'a35d5e5f9f781728070aecae3bfe329f49dadcd50ca2984e0fbdd2219825a0db'
-            '01bf41483d5d8935ed2dd6294ee04024f2d9bcb2ef13276b07331e485965c822'
-            'c8b92768c869d0d77595da3466cc0dba3b6f067ea5fac048f32a918bbe98bbf6'
-            '8b80a0cec39c38a47521183a3030a782ab84bb6ea5e9cc58213589245288e718'
-            'c676067fff399a87625187381db5331d82c44f6c14f51d409392851dbbeb5074'
-            '291d1fa51344325e3dabc0c1287750cde98605c30f079ffad9b3523a3aba860d')
+            'f592752875085fceebdb27e65802e09c07edd7be57eec0da3edfcad5052be2ae'
+            '070edd5e720c063be41c158f39b7ef62a0d4a7f547ca0d23216104d5428ff971')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
 
   patch -Np1 -i "${srcdir}/arch.patch"
-  patch -Np1 -i "${srcdir}/network_fixes_up_to_5090a4ccce.patch"
-  patch -Np1 -i "${srcdir}/shell-xfixes-cursor_missing_free.patch"
-  patch -Np1 -i "${srcdir}/st-private_fix_memory_leak.patch"
-  patch -Np1 -i "${srcdir}/st-private_correct_fix_memory_leak.patch"
-  patch -Np1 -i "${srcdir}/0001-Don-t-crash-when-removing-nameless-user.patch"
+  patch -Np1 -i "${srcdir}/bluetoothstatus-always-update-devices.patch"
+  patch -Np1 -i "${srcdir}/shell-recorder-missing-XFree.patch"
 
   ./configure --prefix=/usr --sysconfdir=/etc \
       --libexecdir=/usr/lib/gnome-shell \

+ 132 - 0
bluetoothstatus-always-update-devices.patch

@@ -0,0 +1,132 @@
+From 76fce94b66be7bdebbedcc3bce62898da51da15a Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Wed, 13 Apr 2011 17:08:45 +0000
+Subject: BluetoothStatus: always update devices
+
+Previously, we skipped rebuilding device items in case the device
+had already been seen, but this caused the connected switch not to
+be updated. Now it has been refactored to update in case the device
+changes, and to create only when the device is completely new.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=647565
+---
+diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
+index 070016a..cee2f90 100644
+--- a/js/ui/status/bluetooth.js
++++ b/js/ui/status/bluetooth.js
+@@ -127,13 +127,6 @@ Indicator.prototype = {
+         }
+     },
+ 
+-    _deviceCompare: function(d1, d2) {
+-        return d1.device_path == d2.device_path &&
+-            d1.bdaddr == d2.bdaddr &&
+-            d1.can_connect == d2.can_connect &&
+-            d1.capabilities == d2.capabilities;
+-    },
+-
+     _updateDevices: function() {
+         let devices = this._applet.get_devices();
+ 
+@@ -142,12 +135,8 @@ Indicator.prototype = {
+             let item = this._deviceItems[i];
+             let destroy = true;
+             for (let j = 0; j < devices.length; j++) {
+-                // we need to deep compare because BluetoothSimpleDevice is a boxed type
+-                // (but we take advantage of that, because _skip will disappear the next
+-                // time get_devices() is called)
+-                if (this._deviceCompare(item._device, devices[j])) {
+-                    item.label.text = devices[j].alias;
+-                    devices[j]._skip = true;
++                if (item._device.device_path == devices[j].device_path) {
++                    this._updateDeviceItem(item, devices[j]);
+                     destroy = false;
+                     break;
+                 }
+@@ -162,7 +151,7 @@ Indicator.prototype = {
+         this._hasDevices = newlist.length > 0;
+         for (let i = 0; i < devices.length; i++) {
+             let d = devices[i];
+-            if (d._skip)
++            if (d._item)
+                 continue;
+             let item = this._createDeviceItem(d);
+             if (item) {
+@@ -177,17 +166,55 @@ Indicator.prototype = {
+             this._deviceSep.actor.hide();
+     },
+ 
++    _updateDeviceItem: function(item, device) {
++        if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) {
++            item.destroy();
++            return;
++        }
++
++        let prevDevice = item._device;
++        let prevCapabilities = prevDevice.capabilities;
++        let prevCanConnect = prevDevice.can_connect;
++
++        // adopt the new device object
++        item._device = device;
++        device._item = item;
++
++        // update properties
++        item.label.text = device.alias;
++
++        if (prevCapabilities != device.capabilities ||
++            prevCanConnect != device.can_connect) {
++            // need to rebuild the submenu
++            item.menu.removeAll();
++            this._buildDeviceSubMenu(item, device);
++        }
++
++        // update connected property
++        if (device.can_connect)
++            item._connectedMenuitem.setToggleState(device.connected);
++    },
++
+     _createDeviceItem: function(device) {
+         if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE)
+             return null;
+         let item = new PopupMenu.PopupSubMenuMenuItem(device.alias);
++
++        // adopt the device object, and add a back link
+         item._device = device;
++        device._item = item;
+ 
++        this._buildDeviceSubMenu(item, device);
++
++        return item;
++    },
++
++    _buildDeviceSubMenu: function(item, device) {
+         if (device.can_connect) {
+             item._connected = device.connected;
+-            let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
++            item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
+ 
+-            menuitem.connect('toggled', Lang.bind(this, function() {
++            item._connectedMenuitem.connect('toggled', Lang.bind(this, function() {
+                 if (item._connected > ConnectionState.CONNECTED) {
+                     // operation already in progress, revert
+                     menuitem.setToggleState(menuitem.state);
+@@ -217,7 +244,7 @@ Indicator.prototype = {
+                 }
+             }));
+ 
+-            item.menu.addMenuItem(menuitem);
++            item.menu.addMenuItem(item._connectedMenuitem);
+         }
+ 
+         if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) {
+@@ -263,8 +290,6 @@ Indicator.prototype = {
+         default:
+             break;
+         }
+-
+-        return item;
+     },
+ 
+     _updateFullMenu: function() {
+--
+cgit v0.9

+ 0 - 814
network_fixes_up_to_5090a4ccce.patch

@@ -1,814 +0,0 @@
-From d0780d16224d7bb2ad183542337c48324fdd2185 Mon Sep 17 00:00:00 2001
-From: Giovanni Campagna <gcampagna@src.gnome.org>
-Date: Wed, 06 Apr 2011 16:11:23 +0000
-Subject: NetworkMenu: keep wirelesss networks in predictable order
-
-Adds a function that compares wireless networks and keeps them sorted
-at all times. Order is: first already configured connections, then
-first secure networks, then alphabtic. Also, the appearance of a new access
-point no longer causes the whole menu to be rebuilt (but it still linear
-searches for the position, I guess that could be skipped), which caused
-the addition of more code for tracking the active access point.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=646580
----
-(limited to 'js/ui/status/network.js')
-
-diff --git a/js/ui/status/network.js b/js/ui/status/network.js
-index 6fa5642..49cb3f0 100644
---- a/js/ui/status/network.js
-+++ b/js/ui/status/network.js
-@@ -42,6 +42,10 @@ const NM80211Mode = NetworkManager['80211Mode'];
- const NM80211ApFlags = NetworkManager['80211ApFlags'];
- const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
- 
-+// number of wireless networks that should be visible
-+// (the remaining are placed into More...)
-+const NUM_VISIBLE_NETWORKS = 5;
-+
- function macToArray(string) {
-     return string.split(':').map(function(el) {
-         return parseInt(el, 16);
-@@ -1036,6 +1040,7 @@ NMDeviceWireless.prototype = {
-                         item: null,
-                         accessPoints: [ ap ]
-                       };
-+                obj.ssidText = NetworkManager.utils_ssid_to_utf8(obj.ssid);
-                 this._networks.push(obj);
-             }
- 
-@@ -1048,6 +1053,14 @@ NMDeviceWireless.prototype = {
-                 }
-             }
-         }
-+        if (this.device.active_access_point) {
-+            this._activeNetwork = this._networks[this._findNetwork(this.device.active_access_point)];
-+        } else {
-+            this._activeNetwork = null;
-+        }
-+        this._networks.sort(this._networkSortFunction);
-+
-+        this._apChangedId = device.connect('notify::active-access-point', Lang.bind(this, this._activeApChanged));
-         this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
-         this._apRemovedId = device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
- 
-@@ -1055,8 +1068,13 @@ NMDeviceWireless.prototype = {
-     },
- 
-     destroy: function() {
--        if (this._apAddedId) {
-+        if (this._apChangedId) {
-             // see above for this HACK
-+            GObject.Object.prototype.disconnect.call(this.device, this._apChangedId);
-+            this._apChangedId = 0;
-+        }
-+
-+        if (this._apAddedId) {
-             GObject.Object.prototype.disconnect.call(this.device, this._apAddedId);
-             this._apAddedId = 0;
-         }
-@@ -1122,6 +1140,19 @@ NMDeviceWireless.prototype = {
-         }
-     },
- 
-+    _activeApChanged: function() {
-+        this._activeNetwork = null;
-+
-+        let activeAp = this.device.active_access_point;
-+
-+        if (activeAp) {
-+            let pos = this._findNetwork(activeAp);
-+            this._activeNetwork = this._networks[pos];
-+        }
-+
-+        // we don't refresh the view here, setActiveConnection will
-+    },
-+
-     _getApSecurityType: function(accessPoint) {
-         if (accessPoint._secType)
-             return accessPoint._secType;
-@@ -1151,6 +1182,32 @@ NMDeviceWireless.prototype = {
-         return type;
-     },
- 
-+    _networkSortFunction: function(one, two) {
-+        let oneHasConnection = one.connections.length != 0;
-+        let twoHasConnection = two.connections.length != 0;
-+
-+        // place known connections first
-+        // (-1 = good order, 1 = wrong order)
-+        if (oneHasConnection && !twoHasConnection)
-+            return -1;
-+        else if (!oneHasConnection && twoHasConnection)
-+            return 1;
-+
-+        let oneHasSecurity = one.security != NMAccessPointSecurity.NONE;
-+        let twoHasSecurity = two.security != NMAccessPointSecurity.NONE;
-+
-+        // place secure connections first
-+        // (we treat WEP/WPA/WPA2 the same as there is no way to
-+        // take them apart from the UI)
-+        if (oneHasSecurity && !twoHasSecurity)
-+            return -1;
-+        else if (!oneHasSecurity && twoHasSecurity)
-+            return 1;
-+
-+        // sort alphabetically
-+        return GLib.utf8_collate(one.ssidText, two.ssidText);
-+    },
-+
-     _networkCompare: function(network, accessPoint) {
-         if (!ssidCompare(network.ssid, accessPoint.get_ssid()))
-             return false;
-@@ -1173,6 +1230,8 @@ NMDeviceWireless.prototype = {
-     _accessPointAdded: function(device, accessPoint) {
-         let pos = this._findNetwork(accessPoint);
-         let apObj;
-+        let needsupdate = false;
-+
-         if (pos != -1) {
-             apObj = this._networks[pos];
-             if (apObj.accessPoints.indexOf(accessPoint) != -1) {
-@@ -1181,6 +1240,8 @@ NMDeviceWireless.prototype = {
-             }
- 
-             apObj.accessPoints.push(accessPoint);
-+            if (apObj.item)
-+                apObj.item.updateAccessPoints(apObj.accessPoints);
-         } else {
-             apObj = { ssid: accessPoint.get_ssid(),
-                       mode: accessPoint.mode,
-@@ -1189,7 +1250,8 @@ NMDeviceWireless.prototype = {
-                       item: null,
-                       accessPoints: [ accessPoint ]
-                     };
--            this._networks.push(apObj);
-+            apObj.ssidText = NetworkManager.utils_ssid_to_utf8(apObj.ssid);
-+            needsupdate = true;
-         }
- 
-         // check if this enables new connections for this group
-@@ -1198,12 +1260,44 @@ NMDeviceWireless.prototype = {
-             if (this._connectionValidForAP(connection, accessPoint) &&
-                 apObj.connections.indexOf(connection) == -1) {
-                 apObj.connections.push(connection);
-+
-+                // this potentially changes the order
-+                needsupdate = true;
-             }
-         }
- 
--        // update everything
--        this._clearSection();
--        this._createSection();
-+        if (needsupdate) {
-+            if (apObj.item)
-+                apObj.item.destroy();
-+
-+            if (pos != -1)
-+                this._networks.splice(pos, 1);
-+
-+            if (this._networks.length == 0) {
-+                // only network in the list
-+                this._networks.push(apObj);
-+                this._clearSection();
-+                this._createSection();
-+                return;
-+            }
-+
-+            // skip networks that should appear earlier
-+            let menuPos = 0;
-+            for (pos = 0;
-+                 pos < this._networks.length &&
-+                 this._networkSortFunction(this._networks[i], apObj) < 0; ++pos) {
-+                if (this._networks[pos] != this._activeNetwork)
-+                    menuPos++;
-+            }
-+
-+            // (re-)add the network
-+            this._networks.splice(pos, 0, apObj);
-+
-+            if (this._shouldShowConnectionList()) {
-+                menuPos += (this._activeConnectionItem ? 1 : 0);
-+                this._createNetworkItem(apObj, menuPos);
-+            }
-+        }
-     },
- 
-     _accessPointRemoved: function(device, accessPoint) {
-@@ -1315,6 +1409,12 @@ NMDeviceWireless.prototype = {
-                     // remove the connection from the access point group
-                     connections.splice(k);
-                     anyauto = connections.length == 0;
-+
-+                    if (anyauto) {
-+                        // this potentially changes the sorting order
-+                        forceupdate = true;
-+                        break;
-+                    }
-                     if (apObj.item) {
-                         if (apObj.item instanceof PopupMenu.PopupSubMenuMenuItem) {
-                             let items = apObj.item.menu.getMenuItems();
-@@ -1340,6 +1440,7 @@ NMDeviceWireless.prototype = {
-         }
- 
-         if (forceupdate || anyauto) {
-+            this._networks.sort(this._networkSortFunction);
-             this._clearSection();
-             this._createSection();
-         }
-@@ -1355,42 +1456,24 @@ NMDeviceWireless.prototype = {
-         this._connections.push(obj);
- 
-         // find an appropriate access point
--        let any = false, forceupdate = false;
-+        let forceupdate = false;
-         for (let i = 0; i < this._networks.length; i++) {
-             let apObj = this._networks[i];
- 
-             // Check if connection is valid for any of these access points
--            let any = false;
-             for (let k = 0; k < apObj.accessPoints.length; k++) {
-                 let ap = apObj.accessPoints[k];
-                 if (this._connectionValidForAP(connection, ap)) {
-                     apObj.connections.push(connection);
--                    any = true;
-+                    // this potentially changes the sorting order
-+                    forceupdate = true;
-                     break;
-                 }
-             }
--
--            if (any && this._shouldShowConnectionList()) {
--                // we need to show this connection
--                if (apObj.item && apObj.item.menu) {
--                    // We're already showing the submenu for this access point
--                    apObj.item.menu.addMenuItem(this._createAPItem(connection, apObj, true));
--                } else {
--                    if (apObj.item)
--                        apObj.item.destroy();
--                    if (apObj.connections.length == 1) {
--                        apObj.item = this._createAPItem(connection, apObj, false);
--                        this.section.addMenuItem(apObj.item);
--                    } else {
--                        apObj.item = null;
--                        // we need to force an update to create the submenu
--                        forceupdate = true;
--                    }
--                }
--            }
-         }
- 
-         if (forceupdate) {
-+            this._networks.sort(this._networkSortFunction);
-             this._clearSection();
-             this._createSection();
-         }
-@@ -1473,6 +1556,37 @@ NMDeviceWireless.prototype = {
-         return connection;
-     },
- 
-+    _createNetworkItem: function(apObj, position) {
-+        if(apObj.connections.length > 0) {
-+            if (apObj.connections.length == 1)
-+                apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
-+            else {
-+                let title = apObj.ssidText;
-+                apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
-+                apObj.item._apObj = apObj;
-+                for (let i = 0; i < apObj.connections.length; i++)
-+                    apObj.item.menu.addMenuItem(this._createAPItem(apObj.connections[i], apObj, true));
-+            }
-+        } else {
-+            apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
-+            apObj.item._apObj = apObj;
-+            apObj.item.connect('activate', Lang.bind(this, function() {
-+                let connection = this._createAutomaticConnection(apObj);
-+                let accessPoints = sortAccessPoints(apObj.accessPoints);
-+                this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
-+            }));
-+        }
-+        if (position < NUM_VISIBLE_NETWORKS)
-+            this.section.addMenuItem(apObj.item);
-+        else {
-+            if (!this._overflowItem) {
-+                this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
-+                this.section.addMenuItem(this._overflowItem);
-+            }
-+            this._overflowItem.menu.addMenuItem(apObj.item, position - NUM_VISIBLE_NETWORKS);
-+        }
-+    },
-+
-     _createSection: function() {
-         if (!this._shouldShowConnectionList())
-             return;
-@@ -1482,47 +1596,14 @@ NMDeviceWireless.prototype = {
-             this.section.addMenuItem(this._activeConnectionItem);
-         }
- 
--        let activeAp = this.device.active_access_point;
--        let activeApSsid = activeAp ? activeAp.get_ssid() : null;
--
--        // we want five access points in the menu, including the active one
--        let numItems = this._activeConnection ? 4 : 5;
-+        let activeOffset = this._activeConnectionItem ? 1 : 0;
- 
-         for(let j = 0; j < this._networks.length; j++) {
-             let apObj = this._networks[j];
--            if(activeAp && ssidCompare(apObj.ssid, activeApSsid))
-+            if (apObj == this._activeNetwork)
-                 continue;
- 
--            let menuItem;
--            if(apObj.connections.length > 0) {
--                if (apObj.connections.length == 1)
--                    apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
--                else {
--                    let title = NetworkManager.utils_ssid_to_utf8(apObj.ssid) || _("<unknown>");
--                    apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
--                    apObj.item._apObj = apObj;
--                    for (let i = 0; i < apObj.connections.length; i++)
--                        apObj.item.menu.addMenuItem(this._createAPItem(apObj.connections[i], apObj, true));
--                }
--            } else {
--                apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
--                apObj.item._apObj = apObj;
--                apObj.item.connect('activate', Lang.bind(this, function() {
--                    let connection = this._createAutomaticConnection(apObj);
--                    let accessPoints = sortAccessPoints(apObj.accessPoints);
--                    this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
--                }));
--            }
--
--            if (j < numItems)
--                this.section.addMenuItem(apObj.item);
--            else {
--                if (!this._overflowItem) {
--                    this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
--                    this.section.addMenuItem(this._overflowItem);
--                }
--                this._overflowItem.menu.addMenuItem(apObj.item);
--            }
-+            this._createNetworkItem(apObj, j + activeOffset);
-         }
-     },
- };
---
-cgit v0.9
-From 42a5531f1588ae3063e7d8ff7642e9f81c13afbd Mon Sep 17 00:00:00 2001
-From: Dan Winship <danw@gnome.org>
-Date: Wed, 27 Apr 2011 13:05:39 +0000
-Subject: network: fix a variable name
-
----
-(limited to 'js/ui/status/network.js')
-
-diff --git a/js/ui/status/network.js b/js/ui/status/network.js
-index 49cb3f0..d56c0b1 100644
---- a/js/ui/status/network.js
-+++ b/js/ui/status/network.js
-@@ -1285,7 +1285,7 @@ NMDeviceWireless.prototype = {
-             let menuPos = 0;
-             for (pos = 0;
-                  pos < this._networks.length &&
--                 this._networkSortFunction(this._networks[i], apObj) < 0; ++pos) {
-+                 this._networkSortFunction(this._networks[pos], apObj) < 0; ++pos) {
-                 if (this._networks[pos] != this._activeNetwork)
-                     menuPos++;
-             }
---
-cgit v0.9
-From c31109800b3267df433841bff08c9383a5d669cb Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw@redhat.com>
-Date: Mon, 25 Apr 2011 22:13:12 +0000
-Subject: network: simplify connection sorting by using libnm-glib functions
-
-Instead of rolling our own code, use new libnm-glib functions to do
-the same thing.  Requires libnm-glib as of
-779215c742bbe29a2c66202ec7e2e6d43edeb8ff (which will be part of 0.9).
-
-Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648648
----
-(limited to 'js/ui/status/network.js')
-
-diff --git a/js/ui/status/network.js b/js/ui/status/network.js
-index d56c0b1..bf8e272 100644
---- a/js/ui/status/network.js
-+++ b/js/ui/status/network.js
-@@ -505,7 +505,7 @@ NMDevice.prototype = {
-     },
- 
-     connectionValid: function(connection) {
--        throw new TypeError('Invoking pure virtual function NMDevice.connectionValid');
-+        return this.device.connection_valid(connection);
-     },
- 
-     setEnabled: function(enabled) {
-@@ -723,17 +723,6 @@ NMDeviceWired.prototype = {
-         NMDevice.prototype._init.call(this, client, device, connections);
-     },
- 
--    connectionValid: function(connection) {
--        if (connection._type != NetworkManager.SETTING_WIRED_SETTING_NAME)
--            return false;
--
--        let ethernetSettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRED_SETTING_NAME);
--        let fixedMac = ethernetSettings.get_mac_address();
--        if (fixedMac)
--            return macCompare(fixedMac, macToArray(this.device.perm_hw_address));
--        return true;
--    },
--
-     _createSection: function() {
-         NMDevice.prototype._createSection.call(this);
- 
-@@ -876,10 +865,6 @@ NMDeviceModem.prototype = {
-         NMDevice.prototype._clearSection.call(this);
-     },
- 
--    connectionValid: function(connection) {
--        return connection._type == this._connectionType;
--    },
--
-     _createAutomaticConnection: function() {
-         // FIXME: we need to summon the mobile wizard here
-         // or NM will not have the necessary parameters to complete the connection
-@@ -913,18 +898,6 @@ NMDeviceBluetooth.prototype = {
-         NMDevice.prototype._init.call(this, client, device, connections);
-     },
- 
--    connectionValid: function(connection) {
--        if (connection._type != NetworkManager.SETTING_BLUETOOTH_SETTING_NAME)
--            return false;
--
--        let bluetoothSettings = connection.get_setting_by_name(NetworkManager.SETTING_BLUETOOTH_SETTING_NAME);
--        let fixedBdaddr = bluetoothSettings.get_bdaddr();
--        if (fixedBdaddr)
--            return macCompare(fixedBdaddr, macToArray(this.device.hw_address));
--
--        return true;
--    },
--
-     _createAutomaticConnection: function() {
-         let connection = new NetworkManager.Connection;
-         connection._uuid = NetworkManager.utils_uuid_generate();
-@@ -1047,7 +1020,7 @@ NMDeviceWireless.prototype = {
-             // Check if some connection is valid for this AP
-             for (let j = 0; j < validConnections.length; j++) {
-                 let connection = validConnections[j];
--                if (this._connectionValidForAP(connection, ap) &&
-+                if (ap.connection_valid(connection) &&
-                     obj.connections.indexOf(connection) == -1) {
-                     obj.connections.push(connection);
-                 }
-@@ -1121,7 +1094,7 @@ NMDeviceWireless.prototype = {
-         if (best) {
-             for (let i = 0; i < bestApObj.accessPoints.length; i++) {
-                 let ap = bestApObj.accessPoints[i];
--                if (this._connectionValidForAP(best, ap)) {
-+                if (ap.connection_valid(best)) {
-                     this._client.activate_connection(best, this.device, ap.dbus_path, null);
-                     break;
-                 }
-@@ -1257,7 +1230,7 @@ NMDeviceWireless.prototype = {
-         // check if this enables new connections for this group
-         for (let i = 0; i < this._connections.length; i++) {
-             let connection = this._connections[i].connection;
--            if (this._connectionValidForAP(connection, accessPoint) &&
-+            if (accessPoint.connection_valid(connection) &&
-                 apObj.connections.indexOf(connection) == -1) {
-                 apObj.connections.push(connection);
- 
-@@ -1337,7 +1310,7 @@ NMDeviceWireless.prototype = {
-         item.connect('activate', Lang.bind(this, function() {
-             let accessPoints = sortAccessPoints(accessPointObj.accessPoints);
-             for (let i = 0; i < accessPoints.length; i++) {
--                if (this._connectionValidForAP(connection, accessPoints[i])) {
-+                if (accessPoints[i].connection_valid(connection)) {
-                     this._client.activate_connection(connection, this.device, accessPoints[i].dbus_path, null);
-                     break;
-                 }
-@@ -1346,40 +1319,6 @@ NMDeviceWireless.prototype = {
-         return item;
-     },
- 
--    connectionValid: function(connection) {
--        if (connection._type != NetworkManager.SETTING_WIRELESS_SETTING_NAME)
--            return false;
--
--        let wirelessSettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SETTING_NAME);
--        let wirelessSecuritySettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SECURITY_SETTING_NAME);
--
--        let fixedMac = wirelessSettings.get_mac_address();
--        if (fixedMac && !macCompare(fixedMac, macToArray(this.device.perm_hw_address)))
--            return false;
--
--        if (wirelessSecuritySettings &&
--            wirelessSecuritySettings.key_mgmt != 'none' &&
--            wirelessSecuritySettings.key_mgmt != 'ieee8021x') {
--            let capabilities = this.device.wireless_capabilities;
--            if (!(capabilities & NetworkManager.DeviceWifiCapabilities.WPA) ||
--                !(capabilities & NetworkManager.DeviceWifiCapabilities.CIPHER_TKIP))
--                return false;
--            if (wirelessSecuritySettings.get_num_protos() == 1 &&
--                wirelessSecuritySettings.get_proto(0) == 'rsn' &&
--                !(capabilities & NetworkManager.DeviceWifiCapabilities.RSN))
--                return false;
--            if (wirelessSecuritySettings.get_num_pairwise() == 1 &&
--                wirelessSecuritySettings.get_pairwise(0) == 'ccmp' &&
--                !(capabilities & NetworkManager.DeviceWifiCapabilities.CIPHER_CCMP))
--                return false;
--            if (wirelessSecuritySettings.get_num_groups() == 1 &&
--                wirelessSecuritySettings.get_group(0) == 'ccmp' &&
--                !(capabilities & NetworkManager.DeviceWifiCapabilities.CIPHER_CCMP))
--                return false;
--        }
--        return true;
--    },
--
-     _clearSection: function() {
-         NMDevice.prototype._clearSection.call(this);
- 
-@@ -1463,7 +1402,7 @@ NMDeviceWireless.prototype = {
-             // Check if connection is valid for any of these access points
-             for (let k = 0; k < apObj.accessPoints.length; k++) {
-                 let ap = apObj.accessPoints[k];
--                if (this._connectionValidForAP(connection, ap)) {
-+                if (ap.connection_valid(connection)) {
-                     apObj.connections.push(connection);
-                     // this potentially changes the sorting order
-                     forceupdate = true;
-@@ -1479,37 +1418,6 @@ NMDeviceWireless.prototype = {
-         }
-     },
- 
--    _connectionValidForAP: function(connection, ap) {
--        // copied and adapted from nm-applet
--        let wirelessSettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SETTING_NAME);
--        if (!ssidCompare(wirelessSettings.get_ssid(), ap.get_ssid()))
--            return false;
--
--        let wirelessSecuritySettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SECURITY_SETTING_NAME);
--
--        let fixedBssid = wirelessSettings.get_bssid();
--        if (fixedBssid && !macCompare(fixedBssid, macToArray(ap.hw_address)))
--            return false;
--
--        let fixedBand = wirelessSettings.band;
--        if (fixedBand) {
--            let freq = ap.frequency;
--            if (fixedBand == 'a' && (freq < 4915 || freq > 5825))
--                return false;
--            if (fixedBand == 'bg' && (freq < 2412 || freq > 2484))
--                return false;
--        }
--
--        let fixedChannel = wirelessSettings.channel;
--        if (fixedChannel && fixedChannel != NetworkManager.utils_wifi_freq_to_channel(ap.frequency))
--            return false;
--
--        if (!wirelessSecuritySettings)
--            return true;
--
--        return wirelessSettings.ap_security_compatible(wirelessSecuritySettings, ap.flags, ap.wpa_flags, ap.rsn_flags, ap.mode);
--    },
--
-     _createActiveConnectionItem: function() {
-         let activeAp = this.device.active_access_point;
-         let icon, title;
---
-cgit v0.9
-From 101a07a3d79223cc153a6c65f22acd76cbae4818 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw@redhat.com>
-Date: Tue, 03 May 2011 17:21:45 +0000
-Subject: network: fix handling of AP flags and enhance for 802.1x
-
-All WPA APs were getting set as WPA2 due to the check for privacy;
-WPA/WPA2 APs *must* set the Privacy bit according to the standard,
-so we'd never end up in the case for NMAccessPointSecurity.WPA.
-
-Fix that, and also add flags for WPA[2] Enterprise which we'll
-use a bit later for the first-time connect case for 802.1x enabled
-access points.
----
-(limited to 'js/ui/status/network.js')
-
-diff --git a/js/ui/status/network.js b/js/ui/status/network.js
-index bf8e272..6f0cdac 100644
---- a/js/ui/status/network.js
-+++ b/js/ui/status/network.js
-@@ -33,8 +33,10 @@ const NMAccessPointSecurity = {
-     UNKNOWN: 0,
-     NONE: 1,
-     WEP: 2,
--    WPA: 3,
--    WPA2: 4
-+    WPA_PSK: 3,
-+    WPA2_PSK: 4,
-+    WPA_ENT: 5,
-+    WPA2_ENT: 6
- };
- 
- // small optimization, to avoid using [] all the time
-@@ -1129,26 +1131,28 @@ NMDeviceWireless.prototype = {
-     _getApSecurityType: function(accessPoint) {
-         if (accessPoint._secType)
-             return accessPoint._secType;
--        // XXX: have this checked by someone familiar with IEEE 802.1x
- 
-         let flags = accessPoint.flags;
-         let wpa_flags = accessPoint.wpa_flags;
-         let rsn_flags = accessPoint.rsn_flags;
-         let type;
--        if (  !(flags & NM80211ApFlags.PRIVACY)
--	      && (wpa_flags == NM80211ApSecurityFlags.NONE)
--	      && (rsn_flags == NM80211ApSecurityFlags.NONE))
--	    type = NMAccessPointSecurity.NONE;
--        else if (   (flags & NM80211ApFlags.PRIVACY)
--	            && (wpa_flags == NM80211ApSecurityFlags.NONE)
--	            && (rsn_flags == NM80211ApSecurityFlags.NONE))
--	    type = NMAccessPointSecurity.WEP;
--        else if (   !(flags & NM80211ApFlags.PRIVACY)
--	        &&  (wpa_flags != NM80211ApSecurity.NONE)
--	        &&  (rsn_flags != NM80211ApSecurity.NONE))
--	    type = NMAccessPointSecurity.WPA;
--        else
--            type = NMAccessPointSecurity.WPA2;
-+        if (rsn_flags != NM80211ApSecurityFlags.NONE) {
-+            /* RSN check first so that WPA+WPA2 APs are treated as RSN/WPA2 */
-+            if (rsn_flags & NM80211ApSecurityFlags.KEY_MGMT_802_1X)
-+	        type = NMAccessPointSecurity.WPA2_ENT;
-+	    else if (rsn_flags & NM80211ApSecurityFlags.KEY_MGMT_PSK)
-+	        type = NMAccessPointSecurity.WPA2_PSK;
-+        } else if (wpa_flags != NM80211ApSecurityFlags.NONE) {
-+            if (wpa_flags & NM80211ApSecurityFlags.KEY_MGMT_802_1X)
-+                type = NMAccessPointSecurity.WPA_ENT;
-+            else if (wpa_flags & NM80211ApSecurityFlags.KEY_MGMT_PSK)
-+	        type = NMAccessPointSecurity.WPA_PSK;
-+        } else {
-+            if (flags & NM80211ApFlags.PRIVACY)
-+                type = NMAccessPointSecurity.WEP;
-+            else
-+                type = NMAccessPointSecurity.NONE;
-+        }
- 
-         // cache the found value to avoid checking flags all the time
-         accessPoint._secType = type;
---
-cgit v0.9
-From ae0652d13fc2d7caa3d64f2b87d174253cae5901 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw@redhat.com>
-Date: Tue, 03 May 2011 18:31:45 +0000
-Subject: network: fix initial connections to WPA[2] Enterprise APs
-
-Call out to nm-applet to do the dirty work since the dialog of
-doom is pretty complicated and we don't have a JS equivalent
-of it for now.
-
-Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648171
----
-(limited to 'js/ui/status/network.js')
-
-diff --git a/js/ui/status/network.js b/js/ui/status/network.js
-index 6f0cdac..ca4facf 100644
---- a/js/ui/status/network.js
-+++ b/js/ui/status/network.js
-@@ -48,6 +48,16 @@ const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
- // (the remaining are placed into More...)
- const NUM_VISIBLE_NETWORKS = 5;
- 
-+const NMAppletHelperInterface = {
-+    name: 'org.gnome.network_manager_applet',
-+    methods: [
-+        { name: 'ConnectToHiddenNetwork', inSignature: '', outSignature: '' },
-+        { name: 'CreateWifiNetwork', inSignature: '', outSignature: '' },
-+        { name: 'ConnectTo8021xNetwork', inSignature: 'oo', outSignature: '' }
-+    ],
-+};
-+const NMAppletProxy = DBus.makeProxyClass(NMAppletHelperInterface);
-+
- function macToArray(string) {
-     return string.split(':').map(function(el) {
-         return parseInt(el, 16);
-@@ -991,6 +1001,10 @@ NMDeviceWireless.prototype = {
-         this._overflowItem = null;
-         this._networks = [ ];
- 
-+        this._applet_proxy = new NMAppletProxy(DBus.session,
-+                                               'org.gnome.network_manager_applet',
-+                                               '/org/gnome/network_manager_applet');
-+
-         // breaking the layers with this, but cannot call
-         // this.connectionValid until I have a device
-         this.device = device;
-@@ -1483,9 +1497,20 @@ NMDeviceWireless.prototype = {
-             apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
-             apObj.item._apObj = apObj;
-             apObj.item.connect('activate', Lang.bind(this, function() {
--                let connection = this._createAutomaticConnection(apObj);
-                 let accessPoints = sortAccessPoints(apObj.accessPoints);
--                this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
-+                if (   (accessPoints[0]._secType == NMAccessPointSecurity.WPA2_ENT)
-+                    || (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
-+                    // 802.1x-enabled APs get handled by nm-applet for now...
-+                    this._applet_proxy.ConnectTo8021xNetworkRemote(this.device.get_path(),
-+                                                                   accessPoints[0].dbus_path,
-+                                                                   Lang.bind(this, function(results, err) {
-+                                                                       if (err)
-+                                                                           log(err);
-+                                                                   }));
-+                } else {
-+                    let connection = this._createAutomaticConnection(apObj);
-+                    this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
-+                }
-             }));
-         }
-         if (position < NUM_VISIBLE_NETWORKS)
---
-cgit v0.9
-From 5090a4ccce87643081138272fb8a2fe687f1ed0a Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw@redhat.com>
-Date: Tue, 03 May 2011 19:48:10 +0000
-Subject: network: request that nm-applet show the mobile broadband wizard
-
-Use nm-applet 0.8.999 API to call the mobile broadband wizard and
-activate the new connection.
-
-Fixes https://bugzilla.gnome.org/show_bug.cgi?id=649318
----
-(limited to 'js/ui/status/network.js')
-
-diff --git a/js/ui/status/network.js b/js/ui/status/network.js
-index ca4facf..756b27f 100644
---- a/js/ui/status/network.js
-+++ b/js/ui/status/network.js
-@@ -53,7 +53,8 @@ const NMAppletHelperInterface = {
-     methods: [
-         { name: 'ConnectToHiddenNetwork', inSignature: '', outSignature: '' },
-         { name: 'CreateWifiNetwork', inSignature: '', outSignature: '' },
--        { name: 'ConnectTo8021xNetwork', inSignature: 'oo', outSignature: '' }
-+        { name: 'ConnectTo8021xNetwork', inSignature: 'oo', outSignature: '' },
-+        { name: 'ConnectTo3gNetwork', inSignature: 'o', outSignature: '' }
-     ],
- };
- const NMAppletProxy = DBus.makeProxyClass(NMAppletHelperInterface);
-@@ -440,7 +441,8 @@ NMDevice.prototype = {
-             this._client.activate_connection(this._connections[0].connection, this.device, null, null);
-         } else if (this._autoConnectionName) {
-             let connection = this._createAutomaticConnection();
--            this._client.add_and_activate_connection(connection, this.device, null, null);
-+            if (connection)
-+                this._client.add_and_activate_connection(connection, this.device, null, null);
-         }
-     },
- 
-@@ -620,7 +622,8 @@ NMDevice.prototype = {
-             this._autoConnectionItem = new PopupMenu.PopupMenuItem(this._autoConnectionName);
-             this._autoConnectionItem.connect('activate', Lang.bind(this, function() {
-                 let connection = this._createAutomaticConnection();
--                this._client.add_and_activate_connection(connection, this.device, null, null);
-+                if (connection)
-+                    this._client.add_and_activate_connection(connection, this.device, null, null);
-             }));
-             this.section.addMenuItem(this._autoConnectionItem);
-         }
-@@ -777,6 +780,10 @@ NMDeviceModem.prototype = {
-         this.mobileDevice = null;
-         this._connectionType = 'ppp';
- 
-+        this._applet_proxy = new NMAppletProxy(DBus.session,
-+                                               'org.gnome.network_manager_applet',
-+                                               '/org/gnome/network_manager_applet');
-+
-         this._capabilities = device.current_capabilities;
-         if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
-             is_wwan = true;
-@@ -878,19 +885,13 @@ NMDeviceModem.prototype = {
-     },
- 
-     _createAutomaticConnection: function() {
--        // FIXME: we need to summon the mobile wizard here
--        // or NM will not have the necessary parameters to complete the connection
--        // pending a DBus method on nm-applet
--
--        let connection = new NetworkManager.Connection;
--        connection._uuid = NetworkManager.utils_uuid_generate();
--        connection.add_setting(new NetworkManager.SettingConnection({
--            uuid: connection._uuid,
--            id: this._autoConnectionName,
--            type: this._connectionType,
--            autoconnect: false
--        }));
--        return connection;
-+        // Mobile wizard is handled by nm-applet for now...
-+        this._applet_proxy.ConnectTo3gNetworkRemote(this.device.get_path(),
-+                                                    Lang.bind(this, function(results, err) {
-+                                                        if (err)
-+                                                            log(err);
-+                                                    }));
-+        return null;
-     }
- };
- 
---
-cgit v0.9

+ 22 - 0
shell-recorder-missing-XFree.patch

@@ -0,0 +1,22 @@
+From 88df18345069c295e68d319606a11b7727b2bd4b Mon Sep 17 00:00:00 2001
+From: Maxim Ermilov <zaspire@rambler.ru>
+Date: Tue, 24 May 2011 22:46:47 +0000
+Subject: shell-recorder: missing XFree
+
+https://bugzilla.gnome.org/show_bug.cgi?id=650934
+---
+diff --git a/src/shell-recorder.c b/src/shell-recorder.c
+index 6555187..d297923 100644
+--- a/src/shell-recorder.c
++++ b/src/shell-recorder.c
+@@ -412,6 +412,8 @@ recorder_fetch_cursor_image (ShellRecorder *recorder)
+       *(guint32 *)(data + i * stride + 4 * j) = cursor_image->pixels[i * cursor_image->width + j];
+ 
+   cairo_surface_mark_dirty (recorder->cursor_image);
++
++  XFree (cursor_image);
+ }
+ 
+ /* Overlay the cursor image on the frame. We draw the cursor image
+--
+cgit v0.9

+ 0 - 22
shell-xfixes-cursor_missing_free.patch

@@ -1,22 +0,0 @@
-From 88de26138a8b79d89884ff2eb6471c5a8e3b39ca Mon Sep 17 00:00:00 2001
-From: Maxim Ermilov <zaspire@rambler.ru>
-Date: Thu, 05 May 2011 10:06:05 +0000
-Subject: shell-xfixes-cursor: missing XFree
-
-memory returned by XFixesGetCursorImage should be freed after usage.
-https://bugzilla.gnome.org/show_bug.cgi?id=642652
----
-diff --git a/src/shell-xfixes-cursor.c b/src/shell-xfixes-cursor.c
-index 14d2b59..334503d 100644
---- a/src/shell-xfixes-cursor.c
-+++ b/src/shell-xfixes-cursor.c
-@@ -254,6 +254,7 @@ xfixes_cursor_reset_image (ShellXFixesCursor *xfixes_cursor)
-       xfixes_cursor->cursor_hot_y = cursor_image->yhot;
-       g_signal_emit (xfixes_cursor, signals[CURSOR_CHANGED], 0);
-     }
-+  XFree (cursor_image);
- }
- 
- static void
---
-cgit v0.9

+ 0 - 52
st-private_correct_fix_memory_leak.patch

@@ -1,52 +0,0 @@
-From c975740f9228b2c53d79ac08ad704fca5f1c5b6e Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Wed, 11 May 2011 15:21:18 +0000
-Subject: st-private: Correct fix for memory leak
-
-The previous fix in 72f9f482d was wrong; we need to keep around
-the buffer until cairo is done with the pattern.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=649497
----
-diff --git a/src/st/st-private.c b/src/st/st-private.c
-index 51798a1..21ca09a 100644
---- a/src/st/st-private.c
-+++ b/src/st/st-private.c
-@@ -667,6 +667,7 @@ cairo_pattern_t *
- _st_create_shadow_cairo_pattern (StShadow        *shadow_spec,
-                                  cairo_pattern_t *src_pattern)
- {
-+  static cairo_user_data_key_t shadow_pattern_user_data;
-   cairo_t *cr;
-   cairo_surface_t *src_surface;
-   cairo_surface_t *surface_in;
-@@ -728,6 +729,8 @@ _st_create_shadow_cairo_pattern (StShadow        *shadow_spec,
-                                                      width_out,
-                                                      height_out,
-                                                      rowstride_out);
-+  cairo_surface_set_user_data (surface_out, &shadow_pattern_user_data,
-+                               pixels_out, (cairo_destroy_func_t) g_free);
- 
-   dst_pattern = cairo_pattern_create_for_surface (surface_out);
-   cairo_surface_destroy (surface_out);
-@@ -745,8 +748,7 @@ _st_create_shadow_cairo_pattern (StShadow        *shadow_spec,
-                               (width_out - width_in) / 2.0,
-                               (height_out - height_in) / 2.0);
-       cairo_pattern_set_matrix (dst_pattern, &shadow_matrix);
--
--      goto out;
-+      return dst_pattern;
-     }
- 
-   /* Read all the code from the cairo_pattern_set_matrix call
-@@ -784,8 +786,6 @@ _st_create_shadow_cairo_pattern (StShadow        *shadow_spec,
- 
-   cairo_pattern_set_matrix (dst_pattern, &shadow_matrix);
- 
-- out:
--  g_free (pixels_out);
-   return dst_pattern;
- }
- 
---
-cgit v0.9

+ 0 - 40
st-private_fix_memory_leak.patch

@@ -1,40 +0,0 @@
-From 72f9f482d6f1bcb53ea2bd1606818af1f33a5a8c Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Thu, 05 May 2011 19:21:58 +0000
-Subject: st-private: Fix memory leak
-
-==13810== 11,360 bytes in 1 blocks are definitely lost in loss record 18,574 of 18,765
-==13810==    at 0x4005447: calloc (vg_replace_malloc.c:467)
-==13810==    by 0x5191882: standard_calloc (gmem.c:107)
-==13810==    by 0x51920A7: g_malloc0 (gmem.c:196)
-==13810==    by 0x4056201: blur_pixels (st-private.c:466)
-==13810==    by 0x40573B4: _st_create_shadow_cairo_pattern (st-private.c:710)
-==13810==    by 0x4070746: st_theme_node_paint (st-theme-node-drawing.c:856)
-==13810==    by 0x3FEFFFFF: ???
-
-https://bugzilla.gnome.org/show_bug.cgi?id=649497
----
-diff --git a/src/st/st-private.c b/src/st/st-private.c
-index d0aa89b..51798a1 100644
---- a/src/st/st-private.c
-+++ b/src/st/st-private.c
-@@ -746,7 +746,7 @@ _st_create_shadow_cairo_pattern (StShadow        *shadow_spec,
-                               (height_out - height_in) / 2.0);
-       cairo_pattern_set_matrix (dst_pattern, &shadow_matrix);
- 
--      return dst_pattern;
-+      goto out;
-     }
- 
-   /* Read all the code from the cairo_pattern_set_matrix call
-@@ -784,6 +784,8 @@ _st_create_shadow_cairo_pattern (StShadow        *shadow_spec,
- 
-   cairo_pattern_set_matrix (dst_pattern, &shadow_matrix);
- 
-+ out:
-+  g_free (pixels_out);
-   return dst_pattern;
- }
- 
---
-cgit v0.9