0-02-23 Christian Kelly <[email protected]>
authorchrisk
Tue, 23 Feb 2010 00:26:27 +0000
changeset 17569 c00759bc4834
parent 17568 f81bd13460f5
child 17570 0713241da632
0-02-23 Christian Kelly <[email protected]> * patches/gnome-settings-daemon-10-dispswitch-keybinding.diff: Remove, upstream. * base-specs/control-center.spec, base-specs/gnome-settings-daemon.spec, gnome-settings-daemon-02-sleep-action.diff, patches/control-center-03-compiz-integration.diff, patches/control-center-10-keybinding.diff, patches/control-center-07-Wall.diff, patches/control-center-01-no-libgnomekbd.diff, patches/gnome-settings-daemon-10-readd-gst-vol-control-support.diff, patches/gnome-settings-daemon-11-dispswitch-keybinding.diff, patches/gnome-settings-daemon-01-no-libgnomekbd.diff, SUNWgnome-desktop-prefs.spec: Re-work.
ChangeLog
SUNWgnome-desktop-prefs.spec
base-specs/control-center.spec
base-specs/gnome-settings-daemon.spec
patches/control-center-01-no-libgnomekbd.diff
patches/control-center-03-compiz-integration.diff
patches/control-center-07-Wall.diff
patches/control-center-10-keybinding.diff
patches/gnome-settings-daemon-01-no-libgnomekbd.diff
patches/gnome-settings-daemon-02-sleep-action.diff
patches/gnome-settings-daemon-10-dispswitch-keybinding.diff
patches/gnome-settings-daemon-10-readd-gst-vol-control-support.diff
patches/gnome-settings-daemon-11-dispswitch-keybinding.diff
--- a/ChangeLog	Mon Feb 22 10:08:41 2010 +0000
+++ b/ChangeLog	Tue Feb 23 00:26:27 2010 +0000
@@ -1,3 +1,18 @@
+2010-02-23  Christian Kelly  <[email protected]>
+
+	* patches/gnome-settings-daemon-10-dispswitch-keybinding.diff: Remove, 
+	  upstream.
+	* base-specs/control-center.spec, base-specs/gnome-settings-daemon.spec,
+	  gnome-settings-daemon-02-sleep-action.diff, 
+	  patches/control-center-03-compiz-integration.diff, 
+	  patches/control-center-10-keybinding.diff, 
+	  patches/control-center-07-Wall.diff, 
+	  patches/control-center-01-no-libgnomekbd.diff, 
+	  patches/gnome-settings-daemon-10-readd-gst-vol-control-support.diff, 
+	  patches/gnome-settings-daemon-11-dispswitch-keybinding.diff, 
+	  patches/gnome-settings-daemon-01-no-libgnomekbd.diff,
+	  SUNWgnome-desktop-prefs.spec: Re-work.
+
 2010-02-22  Simon Jin <[email protected]>
 
 	* SUNWgnome-eog-plugins.spec:
--- a/SUNWgnome-desktop-prefs.spec	Mon Feb 22 10:08:41 2010 +0000
+++ b/SUNWgnome-desktop-prefs.spec	Tue Feb 23 00:26:27 2010 +0000
@@ -222,30 +222,12 @@
 %doc gnome-control-center-%{cc.version}/README
 %doc(bzip2) gnome-control-center-%{cc.version}/COPYING
 %doc(bzip2) gnome-control-center-%{cc.version}/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/about-me/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/accessibility/at-properties/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/appearance/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/common/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/default-applications/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/display/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/keybindings/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/keyboard/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/mouse/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/network/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/capplets/windows/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/help/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/libwindow-settings/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/po/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/shell/ChangeLog
-%doc(bzip2) gnome-control-center-%{cc.version}/typing-break/ChangeLog
 %doc(bzip2) gnome-control-center-%{cc.version}/NEWS
 %doc gnome-settings-daemon-%{gsd.version}/AUTHORS
-#%doc gnome-settings-daemon-%{gsd.version}/plugins/sound/libsounds/README
 %doc(bzip2) gnome-settings-daemon-%{gsd.version}/COPYING
 %doc(bzip2) gnome-settings-daemon-%{gsd.version}/ChangeLog
 %doc(bzip2) gnome-settings-daemon-%{gsd.version}/po/ChangeLog
 %doc(bzip2) gnome-settings-daemon-%{gsd.version}/NEWS
-#%doc(bzip2) gnome-settings-daemon-%{gsd.version}/plugins/sound/libsounds/ChangeLog
 %dir %attr (0755, root, other) %{_datadir}/doc
 
 %files devel
--- a/base-specs/control-center.spec	Mon Feb 22 10:08:41 2010 +0000
+++ b/base-specs/control-center.spec	Tue Feb 23 00:26:27 2010 +0000
@@ -20,7 +20,7 @@
 Distribution: Java Desktop System
 Vendor:       Sun Microsystems, Inc.
 Summary:      The GNOME control center for GNOME
-Source:       http://ftp.gnome.org/pub/GNOME/sources/gnome-control-center/2.28/gnome-control-center-%{version}.tar.bz2
+Source:       http://ftp.gnome.org/pub/GNOME/sources/gnome-control-center/2.29/gnome-control-center-%{version}.tar.bz2
 Source1:     %{name}-po-sun-%{po_sun_version}.tar.bz2
 %ifnarch sparc
 Source2:      visual-effects-images.tar.bz2
@@ -48,8 +48,6 @@
 Patch8:	     control-center-08-trusted-extensions.diff
 # date:2009-10-29 owner:jefftsai type:bug doo:11979 bugzilla:599990
 Patch9:	     control-center-09-about-me.diff
-# date:2009-11-03 owner:jedy type:bug doo:12427 bugzilla:600531
-Patch10:	     control-center-10-keybinding.diff
 
 URL:          http://www.gnome.org
 BuildRoot:    %{_tmppath}/%{name}-%{version}-build
@@ -123,7 +121,6 @@
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
-%patch10 -p1
 
 %build
 %ifos linux
@@ -233,6 +230,8 @@
 %{_libdir}/*.so
 
 %changelog
+* Tue Feb 23 2010 - [email protected]
+- Remove control-center-10-keybinding.diff, upstream.
 * Mon Feb 14 2010 - [email protected]
 - Bump to 2.29.90.
 * Mon Feb  1 2010 - [email protected]
--- a/base-specs/gnome-settings-daemon.spec	Mon Feb 22 10:08:41 2010 +0000
+++ b/base-specs/gnome-settings-daemon.spec	Tue Feb 23 00:26:27 2010 +0000
@@ -20,7 +20,7 @@
 Distribution: Java Desktop System
 Vendor:       Sun Microsystems, Inc.
 Summary:      The GNOME Settings Daemon
-Source:       http://ftp.gnome.org/pub/GNOME/sources/gnome-settings-daemon/2.28/gnome-settings-daemon-%{version}.tar.bz2
+Source:       http://ftp.gnome.org/pub/GNOME/sources/gnome-settings-daemon/2.29/gnome-settings-daemon-%{version}.tar.bz2
 %if %build_l10n
 Source1:                 l10n-configure.sh
 %endif
@@ -44,10 +44,8 @@
 Patch8:      gnome-settings-daemon-08-find-xrdb.diff
 # date:2009-04-02 owner:lin type:branding bugster:6746963
 Patch9:      gnome-settings-daemon-09-default-keybinding.diff
-# date:2009-04-16 owner:lin type:branding bugzilla:571145
-Patch10:     gnome-settings-daemon-10-readd-gst-vol-control-support.diff
 # date:2009-08-07 owner:dkenny type:branding bugzilla:
-Patch11:     gnome-settings-daemon-11-dispswitch-keybinding.diff
+Patch10:     gnome-settings-daemon-10-dispswitch-keybinding.diff
 URL:          http://www.gnome.org
 BuildRoot:    %{_tmppath}/%{name}-%{version}-build
 Docdir:       %{_defaultdocdir}/control-center2
@@ -115,7 +113,6 @@
 %patch8 -p1
 %patch9 -p1
 %patch10 -p1
-%patch11 -p1
 
 # Rename dir so that #include does not have to change on gnome-control-center.
 # Combines with patch mv-src-dir.diff (see bugzilla 511820).
--- a/patches/control-center-01-no-libgnomekbd.diff	Mon Feb 22 10:08:41 2010 +0000
+++ b/patches/control-center-01-no-libgnomekbd.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -99,10 +99,10 @@
  	}
  
  	capplet_set_icon (WID ("keyboard_dialog"),
-diff -ruN gnome-control-center-2.27.5.orig/configure.in gnome-control-center-2.27.5/configure.in
---- gnome-control-center-2.27.5.orig/configure.in	2009-08-12 15:40:06.139651543 +0100
-+++ gnome-control-center-2.27.5/configure.in	2009-08-12 15:41:07.114874068 +0100
-@@ -210,13 +210,21 @@
+diff -ruN gnome-control-center-2.29.6.orig/configure.ac gnome-control-center-2.29.6/configure.ac
+--- gnome-control-center-2.29.6.orig/configure.ac	2010-02-02 20:38:20.541874751 +0000
++++ gnome-control-center-2.29.6/configure.ac	2010-02-02 20:40:59.067618126 +0000
+@@ -218,13 +218,21 @@
  dnl ==============
  dnl gswitchit
  dnl ==============
--- a/patches/control-center-03-compiz-integration.diff	Mon Feb 22 10:08:41 2010 +0000
+++ b/patches/control-center-03-compiz-integration.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -1273,17 +1273,6 @@
 + */
 +
 +void effects_init (AppearanceData *data);
-diff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' gnome-control-center-2.28.0/capplets/appearance/appearance-main.c ../SUNWgnome-desktop-prefs-2.28.0.fix/gnome-control-center-2.28.0/capplets/appearance/appearance-main.c
---- gnome-control-center-2.28.0/capplets/appearance/appearance-main.c	2009-08-24 12:54:41.000000000 +0200
-+++ ../SUNWgnome-desktop-prefs-2.28.0.fix/gnome-control-center-2.28.0/capplets/appearance/appearance-main.c	2009-10-16 09:52:28.249834208 +0200
-@@ -166,6 +166,7 @@ main (int argc, char **argv)
-   g_strfreev (wallpaper_files);
-   font_init (data);
-   ui_init (data);
-+  effects_init (data);
- 
-   /* prepare the main window */
-   w = appearance_capplet_get_widget (data, "appearance_window");
 diff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' gnome-control-center-2.28.0/capplets/appearance/appearance.h ../SUNWgnome-desktop-prefs-2.28.0.fix/gnome-control-center-2.28.0/capplets/appearance/appearance.h
 --- gnome-control-center-2.28.0/capplets/appearance/appearance.h	2009-09-07 13:19:06.000000000 +0200
 +++ ../SUNWgnome-desktop-prefs-2.28.0.fix/gnome-control-center-2.28.0/capplets/appearance/appearance.h	2009-10-16 09:52:28.250095799 +0200
@@ -1604,29 +1593,40 @@
        <action-widget response="-11">help_button</action-widget>
        <action-widget response="-7">close_button</action-widget>
      </action-widgets>
-diff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' gnome-control-center-2.28.0/configure.in ../SUNWgnome-desktop-prefs-2.28.0.fix/gnome-control-center-2.28.0/configure.in
---- gnome-control-center-2.28.0/configure.in	2009-10-16 09:53:15.306099773 +0200
-+++ ../SUNWgnome-desktop-prefs-2.28.0.fix/gnome-control-center-2.28.0/configure.in	2009-10-16 09:52:28.250612848 +0200
-@@ -160,6 +160,22 @@ DISPLAY_CAPPLET_LIBS="$DISPLAY_CAPPLET_L
- CAPPLET_LIBS="$CAPPLET_LIBS $x_libs"
+diff -ruN gnome-control-center-2.29.6.orig/configure.ac gnome-control-center-2.29.6/configure.ac
+--- gnome-control-center-2.29.6.orig/configure.ac	2010-02-02 20:43:08.328661566 +0000
++++ gnome-control-center-2.29.6/configure.ac	2010-02-02 20:43:37.866991531 +0000
+@@ -174,6 +174,22 @@
  GNOMECC_LIBS="$GNOMECC_LIBS $x_libs"
  
-+dnl 
-+dnl Check for OpenGL support 
+ dnl
++dnl Check for OpenGL support
 +dnl
 +have_gl=0
 +have_libgl=0
 +AC_CHECK_HEADERS(GL/glx.h)
 +if test $ac_cv_header_GL_glx_h = yes ; then
-+	AC_CHECK_FUNC(glXQueryExtension,[have_gl=1],AC_CHECK_LIB(GL,glXQueryExtension,[have_gl=1;have_libgl=1]))
++       AC_CHECK_FUNC(glXQueryExtension,[have_gl=1],AC_CHECK_LIB(GL,glXQueryExtension,[have_gl=1;have_libgl=1]))
 +fi
 +if test $have_gl = 1 ; then
-+	AC_DEFINE(HAVE_GL,1,[Whether we have GL and glX.])
++       AC_DEFINE(HAVE_GL,1,[Whether we have GL and glX.])
 +fi
 +if test $have_libgl = 1 ; then
-+	LIBS="-lGL $LIBS"
++       LIBS="-lGL $LIBS"
 +fi
 +
- dnl
++dnl
  dnl Check for XCursor support.  If it exists, then we compile the
  dnl mouse capplet with support for it turned on
+ dnl
+diff -ruN gnome-control-center-2.29.6.orig/capplets/appearance/appearance-main.c gnome-control-center-2.29.6/capplets/appearance/appearance-main.c
+--- gnome-control-center-2.29.6.orig/capplets/appearance/appearance-main.c	2010-02-02 20:45:20.834726490 +0000
++++ gnome-control-center-2.29.6/capplets/appearance/appearance-main.c	2010-02-02 20:46:36.657848187 +0000
+@@ -164,6 +164,7 @@
+   desktop_init (data, (const gchar **) wallpaper_files);
+   g_strfreev (wallpaper_files);
+   font_init (data);
++  effects_init (data);
+ 
+   /* prepare the main window */
+   w = appearance_capplet_get_widget (data, "appearance_window");
--- a/patches/control-center-07-Wall.diff	Mon Feb 22 10:08:41 2010 +0000
+++ b/patches/control-center-07-Wall.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -1,11 +1,12 @@
---- gnome-control-center-2.27.5.orig/configure.in	2009-08-12 15:50:25.535745726 +0100
-+++ gnome-control-center-2.27.5/configure.in	2009-08-12 15:57:44.653047956 +0100
-@@ -117,7 +117,7 @@
- 			   ],
- 			   have_libslab_deps=yes,
- 			   have_libslab_deps=no)
--WARN_CFLAGS="-Wall"
-+WARN_CFLAGS=""
- AC_SUBST(LIBSLAB_CFLAGS)
- AC_SUBST(LIBSLAB_LIBS)
- AC_SUBST(WARN_CFLAGS)
+diff -ruN gnome-control-center-2.29.6.orig/configure.ac gnome-control-center-2.29.6/configure.ac
+--- gnome-control-center-2.29.6.orig/configure.ac	2010-02-02 20:48:09.567574830 +0000
++++ gnome-control-center-2.29.6/configure.ac	2010-02-02 20:48:27.018724373 +0000
+@@ -122,7 +122,7 @@
+ 				   ],
+ 				   have_libslab_deps=yes,
+ 				   have_libslab_deps=no)
+-	WARN_CFLAGS="-Wall"
++	WARN_CFLAGS=""
+ else
+ 	have_libslab_deps=no
+ fi
--- a/patches/control-center-10-keybinding.diff	Mon Feb 22 10:08:41 2010 +0000
+++ b/patches/control-center-10-keybinding.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -72,32 +72,3 @@
        || keylist->name == NULL)
      {
        g_free (keylist->name);
---- gnome-control-center-2.28.1/capplets/common/wm-common.c
-+++ gnome-control-center-2.28.1/capplets/common/wm-common.c
-@@ -27,7 +27,7 @@ wm_common_get_window_manager_property (Atom atom)
-   guchar *val;
- 
-   if (wm_window == None)
--    return g_strdup (WM_COMMON_UNKNOWN);
-+    return NULL;
- 
-   utf8_string = XInternAtom (GDK_DISPLAY (), "UTF8_STRING", False);
- 
-@@ -46,7 +46,7 @@ wm_common_get_window_manager_property (Atom atom)
-       type != utf8_string || format != 8 || nitems == 0 ||
-       !g_utf8_validate (val, nitems, NULL))
-     {
--      retval = g_strdup (WM_COMMON_UNKNOWN);
-+      retval = NULL;
-     }
-   else
-     {
-@@ -93,7 +93,7 @@ wm_common_get_current_keybindings (void)
-       char *wm_name = wm_common_get_window_manager_property (wm_atom);
-       char *to_copy[] = { NULL, NULL };
- 
--      to_copy[0] = wm_name;
-+      to_copy[0] = wm_name ? wm_name : g_strdup (WM_COMMON_UNKNOWN);
- 
-       results = g_strdupv (to_copy);
-       g_free (wm_name);
--- a/patches/gnome-settings-daemon-01-no-libgnomekbd.diff	Mon Feb 22 10:08:41 2010 +0000
+++ b/patches/gnome-settings-daemon-01-no-libgnomekbd.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -10,60 +10,6 @@
 +#undef HAVE_GSWITCHIT
 +
 
-diff -up gnome-settings-daemon-2.27.5/configure.ac.orig gnome-settings-daemon-2.27.5/configure.ac
-
-diff -up gnome-settings-daemon-2.27.5/plugins/keyboard/Makefile.am.orig gnome-settings-daemon-2.27.5/plugins/keyboard/Makefile.am
---- gnome-settings-daemon-2.27.5/plugins/keyboard/Makefile.am.orig	2009-07-14 10:21:12.000000000 +0100
-+++ gnome-settings-daemon-2.27.5/plugins/keyboard/Makefile.am	2009-08-07 10:22:32.252434166 +0100
-@@ -7,13 +7,18 @@ plugin_LTLIBRARIES = \
- uidir   = $(pkgdatadir)
- ui_DATA = modmap-dialog.ui
- 
-+if HAVE_GSWITCHIT
-+GSWITCHIT_FILES = \
-+	gsd-keyboard-xkb.h      \
-+	gsd-keyboard-xkb.c
-+endif
-+
- libkeyboard_la_SOURCES = 	\
- 	gsd-keyboard-plugin.h	\
- 	gsd-keyboard-plugin.c	\
- 	gsd-keyboard-manager.h	\
- 	gsd-keyboard-manager.c	\
--	gsd-keyboard-xkb.h	\
--	gsd-keyboard-xkb.c	\
-+	$(GSWITCHIT_FILES)	\
- 	gsd-xmodmap.h		\
- 	gsd-xmodmap.c		\
- 	delayed-dialog.h	\
-
-diff -up gnome-settings-daemon-2.27.5/configure.ac.orig gnome-settings-daemon-2.27.5/configure.ac
---- gnome-settings-daemon-2.27.5/configure.ac.orig	2009-07-27 23:26:40.000000000 +0100
-+++ gnome-settings-daemon-2.27.5/configure.ac	2009-08-07 10:27:40.981178782 +0100
-@@ -217,9 +217,19 @@ AC_CHECK_X_LIB(Xxf86misc, XF86MiscQueryE
- AC_SUBST(XF86MISC_LIBS)
- AC_CHECK_X_HEADERS([X11/extensions/XKB.h])
- 
--PKG_CHECK_MODULES(LIBGNOMEKBD, [libgnomekbd >= 2.21.4 libxklavier >= 4.0])
--AC_SUBST(LIBGNOMEKBD_CFLAGS)
--AC_SUBST(LIBGNOMEKBD_LIBS)
-+AC_ARG_ENABLE(gswitchit,
-+       AC_HELP_STRING([--disable-gswitchit],
-+                      [Do not build with gswitchit support]),,
-+                       enable_gswitchit=yes)
-+
-+if test x$enable_libxklavier = xyes; then
-+    PKG_CHECK_MODULES(LIBGNOMEKBD, [libgnomekbd >= 2.21.4 libxklavier >= 4.0])
-+    AC_SUBST(LIBGNOMEKBD_CFLAGS)
-+    AC_SUBST(LIBGNOMEKBD_LIBS)
-+
-+    AC_DEFINE([HAVE_GSWITCHIT], 1, [Defined when gswitchit is detected])
-+fi
-+AM_CONDITIONAL(HAVE_GSWITCHIT, [test $enable_gswitchit = yes])
- 
- dnl ---------------------------------------------------------------------------
- dnl - Housekeeping plugin stuff
-
 --- gnome-settings-daemon-2.26.1/plugins/keyboard/gsd-keyboard-manager.c.ori	2009-04-15 07:07:26.999526943 +0100
 +++ gnome-settings-daemon-2.26.1/plugins/keyboard/gsd-keyboard-manager.c	2009-04-15 07:08:43.002715791 +0100
 @@ -36,6 +36,7 @@
@@ -96,3 +42,40 @@
  
  #ifdef HAVE_X11_EXTENSIONS_XKB_H
          numlock_xkb_init (manager);
+diff -ruN gnome-settings-daemon-2.29.6.orig/configure.ac gnome-settings-daemon-2.29.6/configure.ac
+--- gnome-settings-daemon-2.29.6.orig/configure.ac	2010-02-02 21:06:07.411263241 +0000
++++ gnome-settings-daemon-2.29.6/configure.ac	2010-02-02 21:06:43.656906338 +0000
+@@ -220,9 +220,19 @@
+ AC_SUBST(XF86MISC_LIBS)
+ AC_CHECK_X_HEADERS([X11/extensions/XKB.h])
+ 
+-PKG_CHECK_MODULES(LIBGNOMEKBDUI, [libgnomekbdui >= 2.29.5 libgnomekbd >= 2.29.5 libxklavier >= 5.0])
+-AC_SUBST(LIBGNOMEKBDUI_CFLAGS)
+-AC_SUBST(LIBGNOMEKBDUI_LIBS)
++AC_ARG_ENABLE(gswitchit,
++       AC_HELP_STRING([--disable-gswitchit],
++                      [Do not build with gswitchit support]),,
++                       enable_gswitchit=yes)
++
++if test x$enable_libxklavier = xyes; then
++    PKG_CHECK_MODULES(LIBGNOMEKBD, [libgnomekbd >= 2.21.4 libxklavier >= 4.0])
++    AC_SUBST(LIBGNOMEKBD_CFLAGS)
++    AC_SUBST(LIBGNOMEKBD_LIBS)
++
++    AC_DEFINE([HAVE_GSWITCHIT], 1, [Defined when gswitchit is detected])
++fi
++AM_CONDITIONAL(HAVE_GSWITCHIT, [test $enable_gswitchit = yes])
+ 
+ dnl ---------------------------------------------------------------------------
+ dnl - Housekeeping plugin stuff
+diff -ruN gnome-settings-daemon-2.29.6.orig/plugins/Makefile.am gnome-settings-daemon-2.29.6/plugins/Makefile.am
+--- gnome-settings-daemon-2.29.6.orig/plugins/Makefile.am	2010-02-02 22:25:29.229272945 +0000
++++ gnome-settings-daemon-2.29.6/plugins/Makefile.am	2010-02-02 22:25:39.768885880 +0000
+@@ -9,7 +9,6 @@
+ 	font		\
+ 	housekeeping    \
+ 	keybindings	\
+-	keyboard	\
+ 	media-keys	\
+ 	mouse		\
+ 	sound		\
--- a/patches/gnome-settings-daemon-02-sleep-action.diff	Mon Feb 22 10:08:41 2010 +0000
+++ b/patches/gnome-settings-daemon-02-sleep-action.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -19,12 +19,3 @@
  }
  
  static void
-@@ -919,7 +913,7 @@ do_action (GsdMediaKeysManager *manager,
-                 do_mail_action (manager);
-                 break;
-         case SLEEP_KEY:
--                do_sleep_action (SLEEP_COMMAND, "xset dpms force off");
-+                do_sleep_action (manager);
-                 break;
-         case SCREENSAVER_KEY:
-                 if ((cmd = g_find_program_in_path ("gnome-screensaver-command"))) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gnome-settings-daemon-10-dispswitch-keybinding.diff	Tue Feb 23 00:26:27 2010 +0000
@@ -0,0 +1,98 @@
+diff -urB gnome-settings-daemon-2.27.91/data/apps_gnome_settings_daemon_keybindings.schemas.in gnome-settings-daemon-2.27.91-modify/data/apps_gnome_settings_daemon_keybindings.schemas.in
+--- gnome-settings-daemon-2.27.91/data/apps_gnome_settings_daemon_keybindings.schemas.in	2009-09-03 13:51:45.244964587 +0800
++++ gnome-settings-daemon-2.27.91-modify/data/apps_gnome_settings_daemon_keybindings.schemas.in	2009-09-03 14:01:15.295251212 +0800
+@@ -132,6 +132,17 @@
+             </locale>
+         </schema>
+ 
++        <schema>
++            <key>/schemas/apps/gnome_settings_daemon/keybindings/screensaver_alternative</key>
++            <applyto>/apps/gnome_settings_daemon/keybindings/screensaver_alternative</applyto>
++            <type>string</type>
++            <default>XF86ScreenSaver</default>
++            <locale name="C">
++                <short>Lock screen (Alt Binding)</short>
++                <long>Alternative key binding to lock the screen.</long>
++            </locale>
++        </schema>
++
+ 
+         <schema>
+             <key>/schemas/apps/gnome_settings_daemon/keybindings/help</key>
+@@ -237,5 +248,16 @@
+             </locale>
+         </schema>
+ 
++        <schema>
++            <key>/schemas/apps/gnome_settings_daemon/keybindings/display</key>
++            <applyto>/apps/gnome_settings_daemon/keybindings/display</applyto>
++            <type>string</type>
++            <default>XF86Display</default>
++            <locale name="C">
++                <short>Toggle External Display</short>
++                <long>Binding to toggle the use of an external display.</long>
++            </locale>
++        </schema>
++
+     </schemalist>
+ </gconfschemafile>
+diff -urB gnome-settings-daemon-2.27.91/plugins/media-keys/acme.h gnome-settings-daemon-2.27.91-modify/plugins/media-keys/acme.h
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/acme.h	2009-05-04 02:15:30.000000000 +0800
++++ gnome-settings-daemon-2.27.91-modify/plugins/media-keys/acme.h	2009-09-03 14:01:15.295494499 +0800
+@@ -46,6 +47,7 @@
+         STOP_KEY,
+         PREVIOUS_KEY,
+         NEXT_KEY,
++        DISPLAY_KEY, /* To allow mapping to dispswitch functionality */
+         HANDLED_KEYS
+ };
+ 
+@@ -73,6 +76,7 @@
+         { STOP_KEY, GCONF_BINDING_DIR "/stop", NULL },
+         { PREVIOUS_KEY, GCONF_BINDING_DIR "/previous", NULL },
+         { NEXT_KEY, GCONF_BINDING_DIR "/next", NULL },
++        { DISPLAY_KEY, GCONF_BINDING_DIR "/display", NULL },
+ };
+ 
+ #endif /* __ACME_H__ */
+diff -urB gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-2.27.91-modify/plugins/media-keys/gsd-media-keys-manager.c
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c	2009-09-03 13:51:45.249282917 +0800
++++ gnome-settings-daemon-2.27.91-modify/plugins/media-keys/gsd-media-keys-manager.c	2009-09-03 14:01:15.296333829 +0800
+@@ -620,6 +620,27 @@
+         g_free (command);
+ }
+ 
++static void
++do_display_action (GsdMediaKeysManager *manager)
++{
++        gchar *command;
++        gchar *dispswitch;
++
++        if ((dispswitch = g_find_program_in_path ("dispswitch")) == NULL ) {
++                /* Fall back to known location */
++                dispswitch = g_strdup("/usr/X11/bin/dispswitch");
++        }
++
++        command = g_strdup_printf("%s -toggle", dispswitch );
++
++        if ( command != NULL ) {
++                execute (manager, command, FALSE, FALSE);
++        }
++
++        g_free (dispswitch);
++        g_free (command);
++}
++
+ #ifdef HAVE_PULSE
+ static void
+ update_dialog (GsdMediaKeysManager *manager,
+@@ -993,6 +1015,9 @@
+         case NEXT_KEY:
+                 return do_multimedia_player_action (manager, "Next");
+                 break;
++        case DISPLAY_KEY:
++                do_display_action (manager);
++                break;
+         default:
+                 g_assert_not_reached ();
+         }
--- a/patches/gnome-settings-daemon-10-readd-gst-vol-control-support.diff	Mon Feb 22 10:08:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,814 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 5fada1a..b450ff0 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -257,6 +257,48 @@ AM_CONDITIONAL(HAVE_PULSE, test "x$have_pulse" = "xtrue")
- AC_SUBST(PULSE_CFLAGS)
- AC_SUBST(PULSE_LIBS)
- 
-+dnl ==============================================
-+dnl GStreamer section
-+dnl ==============================================
-+GST_MAJORMINOR=auto
-+
-+AC_ARG_ENABLE(gstreamer,
-+AC_HELP_STRING([--enable-gstreamer],[use gstreamer if available (and optionally specify a version)]),
-+[case "${enableval}" in
-+ yes) ENABLE_GSTREAMER=yes ;;
-+ 0.10) ENABLE_GSTREAMER=yes && GST_MAJORMINOR=0.10 ;;
-+ no)  ENABLE_GSTREAMER=no ;;
-+ *) AC_MSG_ERROR([
-+                  *** Bad value ${enableval} for --enable-gstreamer
-+                  *** Please use one of the following:
-+                  ***    --enable-gstreamer=0.10
-+               ]) ;;
-+esac],
-+[ENABLE_GSTREAMER=yes]) dnl Default value
-+
-+have_gstreamer=no
-+if test "x$ENABLE_GSTREAMER" = "xyes"; then
-+   GST_REQS=0.10.1.2
-+   PKGS="gstreamer-0.10 >= $GST_REQS gstreamer-plugins-base-0.10 >= $GST_REQS"
-+
-+   PKG_CHECK_MODULES(GST, $PKGS, have_gstreamer=yes,
-+                     AC_MSG_RESULT([no]))
-+
-+   if test "x$have_pulse" = "xtrue"; then
-+      AC_MSG_ERROR([*** GStreamer & Pulseaudio both are selected ***])
-+   fi
-+
-+   if test "x$have_gstreamer" = "xyes"; then
-+      GST_LIBS="$GST_LIBS -lgstinterfaces-0.10 -lgstaudio-0.10"
-+      AC_DEFINE(HAVE_GSTREAMER,1,[enable gstreamer])
-+   fi
-+else
-+   AC_MSG_NOTICE([*** GStreamer support disabled ***])
-+fi
-+AM_CONDITIONAL(HAVE_GSTREAMER, test "x$have_gstreamer" = "xyes")
-+AC_SUBST(GST_LIBS)
-+AC_SUBST(GST_CFLAGS)
-+
- # ---------------------------------------------------------------------------
- # Enable Profiling
- # ---------------------------------------------------------------------------
-@@ -395,6 +437,7 @@ echo "
-         dbus-1 system.d dir:      ${DBUS_SYS_DIR}
- 
-         Libnotify support:        ${have_libnotify}
-+        GStreamer support:        ${have_gstreamer}
-         PulseAudio support:       ${have_pulse}
-         Profiling support:        ${enable_profiling}
- "
-diff --git a/plugins/media-keys/Makefile.am b/plugins/media-keys/Makefile.am
-index fae8a5e..edb215e 100644
---- a/plugins/media-keys/Makefile.am
-+++ b/plugins/media-keys/Makefile.am
-@@ -1,12 +1,7 @@
- NULL =
- 
--SUBDIRS =
--plugin_LTLIBRARIES =
--
--if HAVE_PULSE
--SUBDIRS += cut-n-paste
--plugin_LTLIBRARIES += libmedia-keys.la
--endif
-+SUBDIRS = cut-n-paste
-+plugin_LTLIBRARIES = libmedia-keys.la
- 
- BUILT_SOURCES = 			\
- 	gsd-media-keys-manager-glue.h	\
-@@ -54,16 +49,14 @@ libmedia_keys_la_LDFLAGS = 		\
- 
- libmedia_keys_la_LIBADD  = 		\
- 	$(top_builddir)/plugins/common/libcommon.la			\
--	$(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la	\
-+	$(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la        \
- 	$(SETTINGS_PLUGIN_LIBS)						\
- 	$(XF86MISC_LIBS)
- 
- plugin_in_files = 		\
- 	media-keys.gnome-settings-plugin.in
- 
--if HAVE_PULSE
- plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin)
--endif
- 
- noinst_PROGRAMS =				\
- 	test-media-keys				\
-@@ -124,9 +117,7 @@ test_media_keys_LDADD = \
- 	$(XF86MISC_LIBS)			\
- 	$(GST_LIBS)
- 
--if HAVE_PULSE
- test_media_keys_LDADD += $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la
--endif
- 
- gtkbuilderdir = $(pkgdatadir)
- gtkbuilder_DATA =	\
-diff --git a/plugins/media-keys/cut-n-paste/Makefile.am b/plugins/media-keys/cut-n-paste/Makefile.am
-index bc59a10..6486ac0 100644
---- a/plugins/media-keys/cut-n-paste/Makefile.am
-+++ b/plugins/media-keys/cut-n-paste/Makefile.am
-@@ -4,16 +4,24 @@ noinst_LTLIBRARIES = libgvc.la
- 
- INCLUDES =					\
- 	$(WARN_CFLAGS)				\
--	$(VOLUME_CONTROL_CFLAGS)		\
--	$(PULSE_CFLAGS)				\
- 	$(NULL)
- 
- libgvc_la_LIBADD =		\
--	$(VOLUME_CONTROL_LIBS)	\
--	$(PULSE_LIBS)		\
- 	$(NULL)
- 
- libgvc_la_SOURCES =			\
-+	$(NULL)
-+
-+if HAVE_PULSE
-+INCLUDES +=					\
-+	$(VOLUME_CONTROL_CFLAGS)		\
-+	$(PULSE_CFLAGS)
-+
-+libgvc_la_LIBADD +=		\
-+	$(VOLUME_CONTROL_LIBS)	\
-+	$(PULSE_LIBS)
-+
-+libgvc_la_SOURCES +=			\
- 	gvc-mixer-stream.h		\
- 	gvc-mixer-stream.c		\
- 	gvc-channel-map.h		\
-@@ -31,8 +39,22 @@ libgvc_la_SOURCES =			\
- 	gvc-mixer-event-role.h		\
- 	gvc-mixer-event-role.c		\
- 	gvc-mixer-control.h		\
--	gvc-mixer-control.c		\
--	$(NULL)
-+	gvc-mixer-control.c
-+endif
-+
-+if HAVE_GSTREAMER
-+INCLUDES +=					\
-+	$(SETTINGS_PLUGIN_CFLAGS)		\
-+	$(AM_CFLAGS)				\
-+	$(GST_CFLAGS)
-+
-+libgvc_la_LIBADD +=		\
-+	$(GST_LIBS)
-+
-+libgvc_la_SOURCES +=			\
-+	gvc-gstreamer-acme-vol.c	\
-+	gvc-gstreamer-acme-vol.h
-+endif
- 
- MAINTAINERCLEANFILES =                  \
-         *~                              \
-diff --git a/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
-new file mode 100644
-index 0000000..8948480
---- /dev/null
-+++ b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
-@@ -0,0 +1,402 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-+
-+/* acme-volume.c
-+
-+   Copyright (C) 2002, 2003 Bastien Nocera
-+   Copyright (C) 2004 Novell, Inc.
-+   Copyright (C) 2009 PERIER Romain <[email protected]>
-+
-+   The Gnome Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Library General Public License as
-+   published by the Free Software Foundation; either version 2 of the
-+   License, or (at your option) any later version.
-+
-+   The Gnome Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Library General Public License for more details.
-+
-+   You should have received a copy of the GNU Library General Public
-+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
-+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+   Boston, MA 02111-1307, USA.
-+
-+   Author: Bastien Nocera <[email protected]>
-+           Jon Trowbridge <[email protected]>
-+*/
-+
-+#include "config.h"
-+#include "gvc-gstreamer-acme-vol.h"
-+
-+#include <gst/gst.h>
-+#include <gst/audio/mixerutils.h>
-+#include <gst/interfaces/mixer.h>
-+#include <gst/interfaces/propertyprobe.h>
-+
-+#include <gconf/gconf-client.h>
-+
-+#include <string.h>
-+
-+#define TIMEOUT	4
-+
-+#define DEFAULT_MIXER_DEVICE_KEY   "/desktop/gnome/sound/default_mixer_device"
-+#define DEFAULT_MIXER_TRACKS_KEY   "/desktop/gnome/sound/default_mixer_tracks"
-+
-+#define ACME_VOLUME_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ACME_TYPE_VOLUME, AcmeVolumePrivate))
-+
-+struct AcmeVolumePrivate {
-+	GstMixer     *mixer;
-+	GList        *mixer_tracks;
-+	guint         timer_id;
-+	gdouble       volume;
-+	gboolean      mute;
-+	GConfClient  *gconf_client;
-+};
-+
-+G_DEFINE_TYPE (AcmeVolume, acme_volume, G_TYPE_OBJECT)
-+
-+static gboolean acme_volume_open  (AcmeVolume *acme);
-+static void     acme_volume_close (AcmeVolume *acme);
-+static gboolean acme_volume_close_real (AcmeVolume *self);
-+
-+static gpointer acme_volume_object = NULL;
-+
-+static void
-+acme_volume_finalize (GObject *object)
-+{
-+	AcmeVolume *self;
-+
-+	g_return_if_fail (object != NULL);
-+	g_return_if_fail (ACME_IS_VOLUME (object));
-+
-+	self = ACME_VOLUME (object);
-+
-+	if (self->_priv->timer_id != 0)
-+		g_source_remove (self->_priv->timer_id);
-+	acme_volume_close_real (self);
-+
-+	if (self->_priv->gconf_client != NULL) {
-+		g_object_unref (self->_priv->gconf_client);
-+		self->_priv->gconf_client = NULL;
-+	}
-+
-+	G_OBJECT_CLASS (acme_volume_parent_class)->finalize (object);
-+}
-+
-+void
-+acme_volume_set_mute (AcmeVolume *self, gboolean val)
-+{
-+	GList *t;
-+
-+	g_return_if_fail(ACME_IS_VOLUME(self));
-+	g_return_if_fail(acme_volume_open(self));
-+
-+	for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
-+		GstMixerTrack *track = GST_MIXER_TRACK (t->data);
-+		gst_mixer_set_mute (self->_priv->mixer, track, val);
-+	}
-+	self->_priv->mute = val;
-+	acme_volume_close (self);
-+}
-+
-+static void
-+update_state (AcmeVolume * self)
-+{
-+	gint *volumes, n;
-+	gdouble vol = 0;
-+	GstMixerTrack *track = GST_MIXER_TRACK (self->_priv->mixer_tracks->data);
-+
-+	/* update mixer by getting volume */
-+	volumes = g_new0 (gint, track->num_channels);
-+	gst_mixer_get_volume (self->_priv->mixer, track, volumes);
-+	for (n = 0; n < track->num_channels; n++)
-+		vol += volumes[n];
-+	g_free (volumes);
-+	vol /= track->num_channels;
-+	vol = 100 * vol / (track->max_volume - track->min_volume);
-+
-+	/* update mute flag, and volume if not muted */
-+	if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE))
-+		self->_priv->mute = TRUE;
-+	self->_priv->volume = vol;
-+}
-+
-+gboolean
-+acme_volume_get_mute (AcmeVolume *self)
-+{
-+	g_return_val_if_fail(acme_volume_open(self), FALSE);
-+
-+	update_state (self);
-+	acme_volume_close (self);
-+
-+	return self->_priv->mute;
-+}
-+
-+gint
-+acme_volume_get_volume (AcmeVolume *self)
-+{
-+
-+	g_return_val_if_fail(acme_volume_open(self), 0);
-+
-+	update_state (self);
-+
-+	acme_volume_close (self);
-+	
-+	return (gint) (self->_priv->volume + 0.5);
-+}
-+
-+void
-+acme_volume_set_volume (AcmeVolume *self, gint val)
-+{
-+	GList *t;
-+
-+	g_return_if_fail(acme_volume_open(self));
-+
-+	val = CLAMP (val, 0, 100);
-+
-+	for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
-+		GstMixerTrack *track = GST_MIXER_TRACK (t->data);
-+		gint *volumes, n;
-+		gdouble scale = (track->max_volume - track->min_volume) / 100.0;
-+		gint vol = (gint) (val * scale + track->min_volume + 0.5);
-+
-+		volumes = g_new (gint, track->num_channels);
-+		for (n = 0; n < track->num_channels; n++)
-+			volumes[n] = vol;
-+		gst_mixer_set_volume (self->_priv->mixer, track, volumes);
-+		g_free (volumes);
-+	}
-+
-+	/* update state */
-+	self->_priv->volume = val;
-+
-+	acme_volume_close (self);
-+}
-+
-+void
-+acme_volume_mute_toggle (AcmeVolume *self)
-+{
-+	gboolean muted;
-+
-+	g_return_if_fail (self != NULL);
-+	g_return_if_fail (ACME_IS_VOLUME(self));
-+
-+	muted = acme_volume_get_mute(self);
-+	acme_volume_set_mute(self, !muted);
-+}
-+
-+gint
-+acme_volume_get_threshold (AcmeVolume *self)
-+{
-+	GList *t;
-+	gint steps = 101;
-+
-+	g_return_val_if_fail(acme_volume_open(self), 1);
-+
-+	for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
-+		GstMixerTrack *track = GST_MIXER_TRACK (t->data);
-+		gint track_steps = track->max_volume - track->min_volume;
-+		if (track_steps > 0 && track_steps < steps)
-+			steps = track_steps;
-+	}
-+
-+	acme_volume_close (self);
-+
-+	return 100 / steps + 1;
-+}
-+
-+static gboolean
-+acme_volume_close_real (AcmeVolume *self)
-+{
-+	if (self->_priv->mixer != NULL)
-+	{
-+		gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
-+		gst_object_unref (GST_OBJECT (self->_priv->mixer));
-+		g_list_foreach (self->_priv->mixer_tracks, (GFunc) g_object_unref, NULL);
-+		g_list_free (self->_priv->mixer_tracks);
-+		self->_priv->mixer = NULL;
-+		self->_priv->mixer_tracks = NULL;
-+	}
-+
-+	self->_priv->timer_id = 0;
-+	return FALSE;
-+}
-+
-+/*
-+ * _acme_set_mixer
-+ * @mixer  A pointer to mixer element
-+ * @data   A pointer to user data (AcmeVolume instance to be modified)
-+ * @return A gboolean indicating success if Master track was found, failed otherwises.
-+ */
-+static gboolean
-+_acme_set_mixer(GstMixer *mixer, gpointer user_data)
-+{
-+	const GList *tracks;
-+
-+	for (tracks = gst_mixer_list_tracks (mixer); tracks != NULL; tracks = tracks->next) {
-+		GstMixerTrack *track = GST_MIXER_TRACK (tracks->data);
-+
-+		if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
-+			AcmeVolume *self;
-+
-+			self = ACME_VOLUME (user_data);
-+
-+			self->_priv->mixer = mixer;
-+			self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
-+			return TRUE;
-+		}
-+
-+		continue;
-+	}
-+
-+	return FALSE;
-+}
-+
-+/* This is a modified version of code from gnome-media's gst-mixer */
-+static gboolean
-+acme_volume_open (AcmeVolume *self)
-+{
-+	gchar *mixer_device, **factory_and_device = NULL;
-+	GList *mixer_list;
-+
-+	if (self->_priv->timer_id != 0) {
-+		g_source_remove (self->_priv->timer_id);
-+		self->_priv->timer_id = 0;
-+		return TRUE;
-+	}
-+
-+	mixer_device = gconf_client_get_string (self->_priv->gconf_client, DEFAULT_MIXER_DEVICE_KEY, NULL);
-+	if (mixer_device != NULL)
-+		factory_and_device = g_strsplit (mixer_device, ":", 2);
-+
-+	if (factory_and_device != NULL && factory_and_device[0] != NULL) {
-+		GstElement *element;
-+
-+		element = gst_element_factory_make (factory_and_device[0], NULL);
-+
-+		if (element != NULL) {
-+			if (factory_and_device[1] != NULL &&
-+			    g_object_class_find_property (G_OBJECT_GET_CLASS (element), "device"))
-+				g_object_set (G_OBJECT (element), "device", factory_and_device[1], NULL);
-+			gst_element_set_state (element, GST_STATE_READY);
-+
-+			if (GST_IS_MIXER (element))
-+				self->_priv->mixer = GST_MIXER (element);
-+			else {
-+				gst_element_set_state (element, GST_STATE_NULL);
-+				gst_object_unref (element);
-+			}
-+		}
-+	}
-+
-+	g_free (mixer_device);
-+	g_strfreev (factory_and_device);
-+
-+	if (self->_priv->mixer != NULL) {
-+		const GList *m;
-+		GSList *tracks, *t;
-+		GError *error = NULL;
-+
-+		/* Try to use tracks saved in GConf 
-+		   Note: errors need to be treated , for example if the user set a non type list for this key
-+		   or if the elements type_list are not "matched" */
-+		tracks = gconf_client_get_list (self->_priv->gconf_client, DEFAULT_MIXER_TRACKS_KEY, 
-+						GCONF_VALUE_STRING, &error);
-+
-+		if (error) {
-+			g_warning("ERROR: %s\n", error->message);
-+			g_error_free(error);
-+		}
-+
-+		/* We use these tracks ONLY if they are supported on the system with the following mixer */
-+		for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
-+			GstMixerTrack *track = GST_MIXER_TRACK (m->data);
-+
-+			for (t = tracks; t != NULL; t = t->next)
-+				if (!strcmp (t->data, track->label))
-+					self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
-+
-+		}
-+
-+		g_slist_foreach (tracks, (GFunc)g_free, NULL);
-+		g_slist_free (tracks);
-+
-+		/* If no track stored in GConf is avaiable try to use Master track */
-+		if (self->_priv->mixer_tracks == NULL) {
-+			for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
-+				GstMixerTrack *track = GST_MIXER_TRACK (m->data);
-+
-+				if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
-+					self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
-+					break;
-+				}
-+			}
-+		}
-+
-+		if (self->_priv->mixer_tracks != NULL)
-+			return TRUE;
-+		else {
-+			gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
-+			gst_object_unref (self->_priv->mixer);
-+		}
-+	}
-+
-+	/* Go through all elements of a certain class and check whether
-+	 * they implement a mixer. If so, walk through the tracks and look
-+	 * for first one named "volume".
-+	 *
-+	 * We should probably do something intelligent if we don't find an
-+	 * appropriate mixer/track.  But now we do something stupid...
-+	 * everything just becomes a no-op.
-+	 */
-+	mixer_list = gst_audio_default_registry_mixer_filter (_acme_set_mixer,
-+			TRUE,
-+			self);
-+
-+	if (mixer_list == NULL)
-+		return FALSE;
-+
-+	/* do not unref the mixer as we keep the ref for self->priv->mixer */
-+	g_list_free (mixer_list);
-+
-+	return TRUE;
-+}
-+
-+static void
-+acme_volume_close (AcmeVolume *self)
-+{
-+	self->_priv->timer_id = g_timeout_add_seconds (TIMEOUT,
-+			(GSourceFunc) acme_volume_close_real, self);
-+}
-+
-+static void
-+acme_volume_init (AcmeVolume *self)
-+{
-+	self->_priv = ACME_VOLUME_GET_PRIVATE (self);
-+	self->_priv->gconf_client = gconf_client_get_default ();
-+}
-+
-+static void
-+acme_volume_class_init (AcmeVolumeClass *klass)
-+{
-+	G_OBJECT_CLASS (klass)->finalize = acme_volume_finalize;
-+
-+	gst_init (NULL, NULL);
-+
-+	g_type_class_add_private (klass, sizeof (AcmeVolumePrivate));
-+}
-+
-+/* acme_volume_new
-+ * @return A singleton instance of type AcmeVolume
-+ */
-+AcmeVolume *
-+acme_volume_new (void)
-+{
-+	if (acme_volume_object == NULL) {
-+		acme_volume_object = g_object_new (ACME_TYPE_VOLUME, NULL);
-+		return ACME_VOLUME(acme_volume_object);
-+	}
-+	g_object_ref(acme_volume_object);
-+	return ACME_VOLUME(acme_volume_object);
-+}
-+
-diff --git a/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
-new file mode 100644
-index 0000000..c14ebc8
---- /dev/null
-+++ b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
-@@ -0,0 +1,56 @@
-+/* acme-volume.h
-+
-+   Copyright (C) 2002, 2003 Bastien Nocera
-+   Copyright (C) 2004 Novell, Inc.
-+   Copyright (C) 2009 PERIER Romain <[email protected]>
-+
-+   The Gnome Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Library General Public License as
-+   published by the Free Software Foundation; either version 2 of the
-+   License, or (at your option) any later version.
-+
-+   The Gnome Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Library General Public License for more details.
-+
-+   You should have received a copy of the GNU Library General Public
-+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
-+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+   Boston, MA 02111-1307, USA.
-+
-+   Author: Bastien Nocera <[email protected]>
-+           Jon Trowbridge <[email protected]>
-+ */
-+
-+#include <glib-object.h>
-+
-+#define ACME_TYPE_VOLUME                        (acme_volume_get_type ())
-+#define ACME_VOLUME(obj)		        (G_TYPE_CHECK_INSTANCE_CAST ((obj), ACME_TYPE_VOLUME, AcmeVolume))
-+#define ACME_VOLUME_CLASS(klass)	        (G_TYPE_CHECK_CLASS_CAST ((klass),  ACME_TYPE_VOLUME, AcmeVolumeClass))
-+#define ACME_IS_VOLUME(obj)	                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ACME_TYPE_VOLUME))
-+#define ACME_VOLUME_GET_CLASS(obj)	        (G_TYPE_INSTANCE_GET_CLASS ((obj), ACME_TYPE_VOLUME, AcmeVolumeClass))
-+
-+typedef struct AcmeVolume AcmeVolume;
-+typedef struct AcmeVolumeClass AcmeVolumeClass;
-+typedef struct AcmeVolumePrivate AcmeVolumePrivate;
-+
-+struct AcmeVolume {
-+	GObject parent;
-+	AcmeVolumePrivate *_priv;
-+};
-+
-+struct AcmeVolumeClass {
-+	GObjectClass parent;
-+};
-+
-+GType       acme_volume_get_type      (void);
-+AcmeVolume *acme_volume_new           (void);
-+void        acme_volume_set_mute      (AcmeVolume *self, gboolean val);
-+void        acme_volume_mute_toggle   (AcmeVolume *self);
-+gboolean    acme_volume_get_mute      (AcmeVolume *self);
-+void        acme_volume_set_volume    (AcmeVolume *self, gint val);
-+gint        acme_volume_get_volume    (AcmeVolume *self);
-+gint        acme_volume_get_threshold (AcmeVolume *self);
-+
-+
-diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
---- a/plugins/media-keys/gsd-media-keys-manager.c
-+++ b/plugins/media-keys/gsd-media-keys-manager.c
-@@ -53,6 +53,8 @@
- #ifdef HAVE_PULSE
- #include <canberra-gtk.h>
- #include "gvc-mixer-control.h"
-+#elif defined(HAVE_GSTREAMER)
-+#include "gvc-gstreamer-acme-vol.h"
- #endif /* HAVE_PULSE */
- 
- #define GSD_DBUS_PATH "/org/gnome/SettingsDaemon"
-@@ -87,6 +89,8 @@ struct GsdMediaKeysManagerPrivate
-         /* Volume bits */
-         GvcMixerControl *volume;
-         GvcMixerStream  *stream;
-+#elif defined(HAVE_GSTREAMER)
-+        AcmeVolume      *volume;
- #endif /* HAVE_PULSE */
-         GtkWidget       *dialog;
-         GConfClient     *conf_client;
-@@ -638,7 +642,9 @@
-                                 CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
-                                 NULL);
- }
-+#endif /* HAVE_PULSE */
- 
-+#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
- static void
- do_sound_action (GsdMediaKeysManager *manager,
-                  int                  type)
-@@ -635,7 +641,11 @@ do_sound_action (GsdMediaKeysManager *manager,
-         guint vol, norm_vol_step;
-         int vol_step;
- 
-+#ifdef HAVE_PULSE
-         if (manager->priv->stream == NULL)
-+#else
-+        if (manager->priv->volume == NULL)
-+#endif
-                 return;
- 
-         vol_step = gconf_client_get_int (manager->priv->conf_client,
-@@ -645,18 +655,34 @@ do_sound_action (GsdMediaKeysManager *manager,
-         if (vol_step <= 0 || vol_step > 100)
-                 vol_step = VOLUME_STEP;
- 
-+#ifdef HAVE_PULSE
-         norm_vol_step = PA_VOLUME_NORM * vol_step / 100;
- 
-         /* FIXME: this is racy */
-         vol = gvc_mixer_stream_get_volume (manager->priv->stream);
-         muted = gvc_mixer_stream_get_is_muted (manager->priv->stream);
-+#else
-+        if (vol_step > 0) {
-+                gint threshold = acme_volume_get_threshold (manager->priv->volume);
-+                if (vol_step < threshold)
-+                        vol_step = threshold;
-+                g_debug ("Using volume step of %d", vol_step);
-+        }
-+        vol = acme_volume_get_volume (manager->priv->volume);
-+        muted = acme_volume_get_mute (manager->priv->volume);
-+#endif
- 
-         switch (type) {
-         case MUTE_KEY:
-+#ifdef HAVE_PULSE
-                 muted = !muted;
-                 gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
-+#else
-+                acme_volume_mute_toggle (manager->priv->volume);
-+#endif
-                 break;
-         case VOLUME_DOWN_KEY:
-+#ifdef HAVE_PULSE
-                 if (!muted && (vol <= norm_vol_step)) {
-                         muted = !muted;
-                         vol = 0;
-@@ -668,9 +694,15 @@ do_sound_action (GsdMediaKeysManager *manager,
-                         if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
-                                 gvc_mixer_stream_push_volume (manager->priv->stream);
-                 }
--                break;
-+#else
-+                if (!muted && (vol <= vol_step))
-+                        acme_volume_mute_toggle (manager->priv->volume);
-+                acme_volume_set_volume (manager->priv->volume, vol - vol_step);
-+#endif
-+               break;
-         case VOLUME_UP_KEY:
-                 if (muted) {
-+#ifdef HAVE_PULSE
-                         muted = !muted;
-                         if (vol == 0) {
-                                vol = vol + norm_vol_step;
-@@ -680,7 +712,16 @@ do_sound_action (GsdMediaKeysManager *manager,
-                         } else {
-                                 gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
-                         }
-+#else
-+                        if (vol == 0) {
-+                                /* We need to unmute otherwise vol is blocked (and muted) */
-+                                acme_volume_set_mute   (manager->priv->volume, FALSE);
-+                        }
-+                        acme_volume_set_volume (manager->priv->volume, vol + vol_step);
-+                        
-+#endif
-                 } else {
-+#ifdef HAVE_PULSE
-                         if (vol < MAX_VOLUME) {
-                                 gboolean set;
-                                 if (vol + norm_vol_step >= MAX_VOLUME) {
-@@ -691,13 +732,34 @@ do_sound_action (GsdMediaKeysManager *manager,
-                                 if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
-                                         gvc_mixer_stream_push_volume (manager->priv->stream);
-                         }
-+#else
-+                        acme_volume_set_volume (manager->priv->volume, vol + vol_step);
-+#endif
-                 }
-                 break;
-         }
- 
-+#ifdef HAVE_PULSE
-         update_dialog (manager, vol, muted);
-+#else
-+        muted = acme_volume_get_mute (manager->priv->volume);
-+        vol = acme_volume_get_volume (manager->priv->volume);
-+
-+        /* FIXME: AcmeVolume should probably emit signals
-+           instead of doing it like this */
-+        dialog_init (manager);
-+        gsd_media_keys_window_set_volume_muted (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
-+                                                muted);
-+        gsd_media_keys_window_set_volume_level (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
-+                                                vol);
-+        gsd_media_keys_window_set_action (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
-+                                          GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME);
-+        dialog_show (manager);
-+#endif /* HAVE_PULSE */
- }
-+#endif /* defined(HAVE_PULSE) || defined(HAVE_GSTREAMER) */
- 
-+#ifdef HAVE_PULSE
- static void
- update_default_sink (GsdMediaKeysManager *manager)
- {
-@@ -856,9 +918,9 @@ do_action (GsdMediaKeysManager *manager,
-         case MUTE_KEY:
-         case VOLUME_DOWN_KEY:
-         case VOLUME_UP_KEY:
--#ifdef HAVE_PULSE
-+#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
-                 do_sound_action (manager, type);
--#endif /* HAVE_PULSE */
-+#endif /* HAVE_PULSE || HAVE_GSTREAMER */
-                 break;
-         case POWER_KEY:
-                 do_exit_action (manager);
-@@ -1061,6 +1123,10 @@ gsd_media_keys_manager_start (GsdMediaKeysManager *manager,
-         gvc_mixer_control_open (manager->priv->volume);
- 
-         gnome_settings_profile_end ("gvc_mixer_control_new");
-+#elif defined(HAVE_GSTREAMER)
-+        gnome_settings_profile_start ("acme_volume_new");
-+        manager->priv->volume = acme_volume_new ();
-+        gnome_settings_profile_end ("acme_volume_new");
- #endif /* HAVE_PULSE */
-         g_idle_add ((GSourceFunc) start_media_keys_idle_cb, manager);
- 
-@@ -1133,6 +1199,7 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
-                 g_object_unref (priv->stream);
-                 priv->stream = NULL;
-         }
-+#elif defined(HAVE_GSTREAMER)
- 
-         if (priv->volume) {
-                 g_object_unref (priv->volume);
--- a/patches/gnome-settings-daemon-11-dispswitch-keybinding.diff	Mon Feb 22 10:08:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-diff -urB gnome-settings-daemon-2.27.91/data/apps_gnome_settings_daemon_keybindings.schemas.in gnome-settings-daemon-2.27.91-modify/data/apps_gnome_settings_daemon_keybindings.schemas.in
---- gnome-settings-daemon-2.27.91/data/apps_gnome_settings_daemon_keybindings.schemas.in	2009-09-03 13:51:45.244964587 +0800
-+++ gnome-settings-daemon-2.27.91-modify/data/apps_gnome_settings_daemon_keybindings.schemas.in	2009-09-03 14:01:15.295251212 +0800
-@@ -132,6 +132,17 @@
-             </locale>
-         </schema>
- 
-+        <schema>
-+            <key>/schemas/apps/gnome_settings_daemon/keybindings/screensaver_alternative</key>
-+            <applyto>/apps/gnome_settings_daemon/keybindings/screensaver_alternative</applyto>
-+            <type>string</type>
-+            <default>XF86ScreenSaver</default>
-+            <locale name="C">
-+                <short>Lock screen (Alt Binding)</short>
-+                <long>Alternative key binding to lock the screen.</long>
-+            </locale>
-+        </schema>
-+
- 
-         <schema>
-             <key>/schemas/apps/gnome_settings_daemon/keybindings/help</key>
-@@ -237,5 +248,16 @@
-             </locale>
-         </schema>
- 
-+        <schema>
-+            <key>/schemas/apps/gnome_settings_daemon/keybindings/display</key>
-+            <applyto>/apps/gnome_settings_daemon/keybindings/display</applyto>
-+            <type>string</type>
-+            <default>XF86Display</default>
-+            <locale name="C">
-+                <short>Toggle External Display</short>
-+                <long>Binding to toggle the use of an external display.</long>
-+            </locale>
-+        </schema>
-+
-     </schemalist>
- </gconfschemafile>
-diff -urB gnome-settings-daemon-2.27.91/plugins/media-keys/acme.h gnome-settings-daemon-2.27.91-modify/plugins/media-keys/acme.h
---- gnome-settings-daemon-2.27.91/plugins/media-keys/acme.h	2009-05-04 02:15:30.000000000 +0800
-+++ gnome-settings-daemon-2.27.91-modify/plugins/media-keys/acme.h	2009-09-03 14:01:15.295494499 +0800
-@@ -39,6 +39,7 @@
-         EMAIL_KEY,
-         SLEEP_KEY,
-         SCREENSAVER_KEY,
-+        SCREENSAVER_ALT_KEY,
-         HELP_KEY,
-         WWW_KEY,
-         PLAY_KEY,
-@@ -46,6 +47,7 @@
-         STOP_KEY,
-         PREVIOUS_KEY,
-         NEXT_KEY,
-+        DISPLAY_KEY, /* To allow mapping to dispswitch functionality */
-         HANDLED_KEYS
- };
- 
-@@ -66,6 +68,7 @@
-         { EMAIL_KEY, GCONF_BINDING_DIR "/email", NULL },
-         { SLEEP_KEY, GCONF_BINDING_DIR "/sleep", NULL },
-         { SCREENSAVER_KEY, GCONF_BINDING_DIR "/screensaver", NULL },
-+        { SCREENSAVER_ALT_KEY, GCONF_BINDING_DIR "/screensaver_alternative", NULL },
-         { HELP_KEY, GCONF_BINDING_DIR "/help", NULL },
-         { WWW_KEY, GCONF_BINDING_DIR "/www", NULL },
-         { PLAY_KEY, GCONF_BINDING_DIR "/play", NULL },
-@@ -73,6 +76,7 @@
-         { STOP_KEY, GCONF_BINDING_DIR "/stop", NULL },
-         { PREVIOUS_KEY, GCONF_BINDING_DIR "/previous", NULL },
-         { NEXT_KEY, GCONF_BINDING_DIR "/next", NULL },
-+        { DISPLAY_KEY, GCONF_BINDING_DIR "/display", NULL },
- };
- 
- #endif /* __ACME_H__ */
-diff -urB gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-2.27.91-modify/plugins/media-keys/gsd-media-keys-manager.c
---- gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c	2009-09-03 13:51:45.249282917 +0800
-+++ gnome-settings-daemon-2.27.91-modify/plugins/media-keys/gsd-media-keys-manager.c	2009-09-03 14:01:15.296333829 +0800
-@@ -620,6 +620,27 @@
-         g_free (command);
- }
- 
-+static void
-+do_display_action (GsdMediaKeysManager *manager)
-+{
-+        gchar *command;
-+        gchar *dispswitch;
-+
-+        if ((dispswitch = g_find_program_in_path ("dispswitch")) == NULL ) {
-+                /* Fall back to known location */
-+                dispswitch = g_strdup("/usr/X11/bin/dispswitch");
-+        }
-+
-+        command = g_strdup_printf("%s -toggle", dispswitch );
-+
-+        if ( command != NULL ) {
-+                execute (manager, command, FALSE, FALSE);
-+        }
-+
-+        g_free (dispswitch);
-+        g_free (command);
-+}
-+
- #ifdef HAVE_PULSE
- static void
- update_dialog (GsdMediaKeysManager *manager,
-@@ -958,6 +979,7 @@
-                 do_sleep_action (manager);
-                 break;
-         case SCREENSAVER_KEY:
-+        case SCREENSAVER_ALT_KEY:
-                 if ((cmd = g_find_program_in_path ("gnome-screensaver-command"))) {
-                         execute (manager, "gnome-screensaver-command --lock", FALSE, FALSE);
-                 } else {
-@@ -993,6 +1015,9 @@
-         case NEXT_KEY:
-                 return do_multimedia_player_action (manager, "Next");
-                 break;
-+        case DISPLAY_KEY:
-+                do_display_action (manager);
-+                break;
-         default:
-                 g_assert_not_reached ();
-         }
-diff -urB gnome-settings-daemon-2.27.91/plugins/xrandr/gsd-xrandr-manager.c gnome-settings-daemon-2.27.91-modify/plugins/xrandr/gsd-xrandr-manager.c
---- gnome-settings-daemon-2.27.91/plugins/xrandr/gsd-xrandr-manager.c	2009-07-28 05:37:28.000000000 +0800
-+++ gnome-settings-daemon-2.27.91-modify/plugins/xrandr/gsd-xrandr-manager.c	2009-09-03 14:01:15.297136907 +0800
-@@ -1004,7 +1004,8 @@
-         if (xev->xany.type != KeyPress && xev->xany.type != KeyRelease)
-                 return GDK_FILTER_CONTINUE;
- 
--        if (xev->xany.type == KeyPress && xev->xkey.keycode == manager->priv->keycode) {
-+        if (manager->priv->keycode && 
-+            xev->xkey.keycode == manager->priv->keycode && xev->xany.type == KeyPress) {
-                 handle_fn_f7 (manager, xev->xkey.time);
- 
-                 return GDK_FILTER_CONTINUE;
-@@ -1950,13 +1951,15 @@
- 
-         manager->priv->running = FALSE;
- 
--        gdk_error_trap_push ();
-+        if (manager->priv->keycode) {
-+            gdk_error_trap_push ();
- 
--        XUngrabKey (gdk_x11_get_default_xdisplay(),
--                    manager->priv->keycode, AnyModifier,
--                    gdk_x11_get_default_root_xwindow());
-+            XUngrabKey (gdk_x11_get_default_xdisplay(),
-+                        manager->priv->keycode, AnyModifier,
-+                        gdk_x11_get_default_root_xwindow());
- 
--        gdk_error_trap_pop ();
-+            gdk_error_trap_pop ();
-+        }
- 
-         gdk_window_remove_filter (gdk_get_default_root_window (),
-                                   (GdkFilterFunc) event_filter,
-@@ -2070,11 +2073,12 @@
- {
-         Display *dpy = gdk_x11_get_default_xdisplay ();
-         guint keyval = gdk_keyval_from_name (VIDEO_KEYSYM);
--        guint keycode = XKeysymToKeycode (dpy, keyval);
-+        /* guint keycode = XKeysymToKeycode (dpy, keyval); */
- 
-         manager->priv = GSD_XRANDR_MANAGER_GET_PRIVATE (manager);
- 
--        manager->priv->keycode = keycode;
-+        /* manager->priv->keycode = keycode; */
-+        manager->priv->keycode = 0; /* Disable Key grabbing */
- 
-         manager->priv->current_fn_f7_config = -1;
-         manager->priv->fn_f7_configs = NULL;