2010-01-06 Jeff Cai <
[email protected]>
* SFEgnome-screensaver.spec:
* SUNWgnome-screensaver.spec:
* base-specs/gnome-screensaver.spec:
* patches/gnome-screensaver-02-unlock-first.diff: Start the unlock
dialog once the lock is enabled
* patches/gnome-screensaver-03-gs-debug.diff: Make the debug msgs
be printed on Solaris
Change the file name SUNW to SFE.
Add two patches.
--- a/ChangeLog Wed Jan 06 03:31:12 2010 +0000
+++ b/ChangeLog Wed Jan 06 13:46:32 2010 +0000
@@ -1,3 +1,16 @@
+2010-01-06 Jeff Cai <[email protected]>
+
+ * SFEgnome-screensaver.spec:
+ * SUNWgnome-screensaver.spec:
+ * base-specs/gnome-screensaver.spec:
+ * patches/gnome-screensaver-02-unlock-first.diff: Start the unlock
+ dialog once the lock is enabled
+ * patches/gnome-screensaver-03-gs-debug.diff: Make the debug msgs
+ be printed on Solaris
+
+ Change the file name SUNW to SFE.
+ Add two patches.
+
2010-01-06 Brian Lu <[email protected]>
* SFElibmapi.spec:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SFEgnome-screensaver.spec Wed Jan 06 13:46:32 2010 +0000
@@ -0,0 +1,168 @@
+#
+# spec file for package SUNWgnome-screensaver
+#
+# includes module(s): gnome-screensaver
+#
+# Copyright 2007 Sun Microsystems, Inc.
+# This file and all modifications and additions to the pristine
+# package are under the same license as the package itself.
+#
+# Owner: me, me, me, I want it!
+#
+%include Solaris.inc
+
+%use gss = gnome-screensaver.spec
+
+Name: SFEgnome-screensaver
+Summary: GNOME screensaver
+Version: %{default_pkg_version}
+SUNW_BaseDir: %{_basedir}
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+%include default-depend.inc
+
+Requires: SUNWcsl
+Requires: SUNWdbus
+Requires: SUNWgtk2
+Requires: SUNWlibglade
+Requires: SUNWlibpopt
+Requires: SUNWlxml
+Requires: SUNWgnome-config
+Requires: SUNWgnome-panel
+Requires: SUNWlibms
+Requires: SUNWzlib
+Requires: SUNWpostrun
+Requires: %{name}-root
+BuildRequires: SUNWcsl
+BuildRequires: SUNWdbus-devel
+BuildRequires: SUNWgtk2-devel
+BuildRequires: SUNWlibglade-devel
+BuildRequires: SUNWlibpopt-devel
+BuildRequires: SUNWlxml
+BuildRequires: SUNWgnome-config-devel
+BuildRequires: SUNWgnome-panel-devel
+
+%package root
+Summary: %{summary} - / filesystem
+SUNW_BaseDir: /
+%include default-depend.inc
+Requires: %{name}
+
+%if %build_l10n
+%package l10n
+Summary: %{summary} - l10n files
+SUNW_BaseDir: %{_basedir}
+%include default-depend.inc
+Requires: %{name}
+%endif
+
+%prep
+rm -rf %name-%version
+mkdir %name-%version
+%gss.prep -d %name-%version
+
+%build
+export CFLAGS="%optflags"
+export LDFLAGS="%_ldflags"
+%gss.build -d %name-%version
+
+%install
+rm -rf $RPM_BUILD_ROOT
+%gss.install -d %name-%version
+
+rm -r $RPM_BUILD_ROOT%{_sysconfdir}/pam.d
+
+%if %build_l10n
+%else
+# REMOVE l10n FILES
+rm -rf $RPM_BUILD_ROOT%{_datadir}/locale
+%endif
+
+
+%{?pkgbuild_postprocess: %pkgbuild_postprocess -v -c "%{version}:%{jds_version}:%{name}:$RPM_ARCH:%(date +%%Y-%%m-%%d):%{support_level}" $RPM_BUILD_ROOT}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+( echo 'test -x /usr/bin/update-desktop-database || exit 0';
+ echo '/usr/bin/update-desktop-database'
+) | $BASEDIR/lib/postrun -b -u -c JDS_wait
+
+%postun
+test -x $BASEDIR/lib/postrun || exit 0
+( echo 'test -x /usr/bin/update-desktop-database || exit 0';
+ echo '/usr/bin/update-desktop-database'
+) | $BASEDIR/lib/postrun -b -u -c JDS
+
+%files
+%defattr (-, root, bin)
+%dir %attr (0755, root, bin) %{_bindir}
+%{_bindir}/*
+%dir %attr (0755, root, bin) %{_libdir}
+%{_libdir}/gnome-screensaver
+%{_libdir}/gnome-screensaver-gl-helper
+%{_libexecdir}/gnome-screensaver-dialog
+%dir %attr (0755, root, other) %{_libdir}/pkgconfig
+%{_libdir}/pkgconfig/*
+%dir %attr(0755, root, sys) %{_datadir}
+%dir %attr (0755, root, other) %{_datadir}/applications
+%{_datadir}/applications/*
+%{_datadir}/desktop-directories
+%{_datadir}/gnome-screensaver
+%dir %attr (0755, root, other) %{_datadir}/pixmaps
+%{_datadir}/pixmaps/*
+%dir %attr (0755, root, other) %{_datadir}/backgrounds
+%{_datadir}/backgrounds/*
+%dir %attr (0755, root, bin) %{_datadir}/gnome-background-properties
+%{_datadir}/gnome-background-properties/*
+%dir %attr(0755, root, bin) %{_mandir}
+%dir %attr(0755, root, bin) %{_mandir}/man1
+%{_mandir}/man1/gnome-screensaver.1
+%{_mandir}/man1/gnome-screensaver-command.1
+%{_mandir}/man1/gnome-screensaver-preferences.1
+
+%files root
+%defattr (-, root, sys)
+%attr (0755, root, sys) %dir %{_sysconfdir}
+%{_sysconfdir}/gconf/schemas/gnome-screensaver.schemas
+%{_sysconfdir}/xdg
+
+%if %build_l10n
+%files l10n
+%defattr (-, root, bin)
+%dir %attr (0755, root, sys) %{_datadir}
+%attr (-, root, other) %{_datadir}/locale
+%endif
+
+%changelog
+* Thu Jan 31 2007 - [email protected]
+- Add manpages to %files after tarball bump.
+* Fri Oct 5 2007 - [email protected]
+- set CFLAGS and LDFLAGS
+* Wed May 09 2007 - [email protected]
+- Add %{_libdir}/gnome-screensaver-gl-helper to %files after getting new tarball
+ to build.
+* Fri Jul 14 2006 - [email protected]
+- update %post/%postun/etc scripts to support diskless client setup,
+ part of 6448317
+* Thu Jun 29 2006 - [email protected]
+- update postrun scripts
+* Sun Jun 11 2006 - [email protected]
+- change group from other to bin/sys
+* Mon Feb 20 2006 - [email protected]
+- Update Build/Requires after running check-deps.pl script.
+* Sat Dec 3 2005 - [email protected]
+- add %post script that runs update-desktop-database
+* Wed Nov 30 2005 - [email protected]
+- Add ACLOCAL_FLAGS setting back as it is needed in bumped tarball.
+* Fri Nov 04 2005 - [email protected]
+- Remove ACLOCAL_FLAGS setting as bugs fixed in bumped tarball.
+* Tue Nov 01 2005 - [email protected]
+- Set ACLOCAL_FLAGS for use in base spec file.
+* Tue Oct 25 2005 - [email protected]
+- Remove unused environment variables in %build section.
+* Mon Oct 24 2005 - [email protected]
+- Remove share package; add build and runtime dependencies.
+* Fri Oct 21 2005 - [email protected]
+- Initial spec file created.
+
--- a/SUNWgnome-screensaver.spec Wed Jan 06 03:31:12 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-#
-# spec file for package SUNWgnome-screensaver
-#
-# includes module(s): gnome-screensaver
-#
-# Copyright 2007 Sun Microsystems, Inc.
-# This file and all modifications and additions to the pristine
-# package are under the same license as the package itself.
-#
-# Owner: me, me, me, I want it!
-#
-%include Solaris.inc
-
-%use gss = gnome-screensaver.spec
-
-Name: SUNWgnome-screensaver
-Summary: GNOME screensaver
-Version: %{default_pkg_version}
-SUNW_BaseDir: %{_basedir}
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%include default-depend.inc
-
-Requires: SUNWcsl
-Requires: SUNWdbus
-Requires: SUNWgtk2
-Requires: SUNWlibglade
-Requires: SUNWlibpopt
-Requires: SUNWlxml
-Requires: SUNWgnome-config
-Requires: SUNWgnome-panel
-Requires: SUNWlibms
-Requires: SUNWmlib
-Requires: SUNWzlib
-Requires: SUNWpostrun
-BuildRequires: SUNWcsl
-BuildRequires: SUNWdbus-devel
-BuildRequires: SUNWgtk2-devel
-BuildRequires: SUNWlibglade-devel
-BuildRequires: SUNWlibpopt-devel
-BuildRequires: SUNWlxml
-BuildRequires: SUNWgnome-config-devel
-BuildRequires: SUNWgnome-panel-devel
-
-%if %build_l10n
-%package l10n
-Summary: %{summary} - l10n files
-SUNW_BaseDir: %{_basedir}
-%include default-depend.inc
-Requires: %{name}
-%endif
-
-%prep
-rm -rf %name-%version
-mkdir %name-%version
-%gss.prep -d %name-%version
-
-%build
-export CFLAGS="%optflags"
-export LDFLAGS="%_ldflags"
-%gss.build -d %name-%version
-
-%install
-rm -rf $RPM_BUILD_ROOT
-%gss.install -d %name-%version
-
-# TODO: Should we keep the gconf files?
-rm -rf $RPM_BUILD_ROOT%{_sysconfdir}
-
-%if %build_l10n
-%else
-# REMOVE l10n FILES
-rm -rf $RPM_BUILD_ROOT%{_datadir}/locale
-%endif
-
-
-%{?pkgbuild_postprocess: %pkgbuild_postprocess -v -c "%{version}:%{jds_version}:%{name}:$RPM_ARCH:%(date +%%Y-%%m-%%d):%{support_level}" $RPM_BUILD_ROOT}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-( echo 'test -x /usr/bin/update-desktop-database || exit 0';
- echo '/usr/bin/update-desktop-database'
-) | $BASEDIR/lib/postrun -b -u -c JDS_wait
-
-%postun
-test -x $BASEDIR/lib/postrun || exit 0
-( echo 'test -x /usr/bin/update-desktop-database || exit 0';
- echo '/usr/bin/update-desktop-database'
-) | $BASEDIR/lib/postrun -b -u -c JDS
-
-%files
-%defattr (-, root, bin)
-%dir %attr (0755, root, bin) %{_bindir}
-%{_bindir}/*
-%dir %attr (0755, root, bin) %{_libdir}
-%{_libdir}/gnome-screensaver
-%{_libdir}/gnome-screensaver-gl-helper
-%{_libexecdir}/gnome-screensaver-dialog
-%dir %attr (0755, root, other) %{_libdir}/pkgconfig
-%{_libdir}/pkgconfig/*
-%dir %attr(0755, root, sys) %{_datadir}
-%dir %attr (0755, root, other) %{_datadir}/applications
-%{_datadir}/applications/*
-%{_datadir}/desktop-directories
-%{_datadir}/gnome-screensaver
-%dir %attr (0755, root, other) %{_datadir}/pixmaps
-%{_datadir}/pixmaps/*
-%dir %attr (0755, root, other) %{_datadir}/backgrounds
-%{_datadir}/backgrounds/*
-%dir %attr (0755, root, bin) %{_datadir}/gnome-background-properties
-%{_datadir}/gnome-background-properties/*
-%dir %attr(0755, root, bin) %{_mandir}
-%dir %attr(0755, root, bin) %{_mandir}/man1
-%{_mandir}/man1/gnome-screensaver.1
-%{_mandir}/man1/gnome-screensaver-command.1
-%{_mandir}/man1/gnome-screensaver-preferences.1
-
-%if %build_l10n
-%files l10n
-%defattr (-, root, bin)
-%dir %attr (0755, root, sys) %{_datadir}
-%attr (-, root, other) %{_datadir}/locale
-%endif
-
-%changelog
-* Thu Jan 31 2007 - [email protected]
-- Add manpages to %files after tarball bump.
-* Fri Oct 5 2007 - [email protected]
-- set CFLAGS and LDFLAGS
-* Wed May 09 2007 - [email protected]
-- Add %{_libdir}/gnome-screensaver-gl-helper to %files after getting new tarball
- to build.
-* Fri Jul 14 2006 - [email protected]
-- update %post/%postun/etc scripts to support diskless client setup,
- part of 6448317
-* Thu Jun 29 2006 - [email protected]
-- update postrun scripts
-* Sun Jun 11 2006 - [email protected]
-- change group from other to bin/sys
-* Mon Feb 20 2006 - [email protected]
-- Update Build/Requires after running check-deps.pl script.
-* Sat Dec 3 2005 - [email protected]
-- add %post script that runs update-desktop-database
-* Wed Nov 30 2005 - [email protected]
-- Add ACLOCAL_FLAGS setting back as it is needed in bumped tarball.
-* Fri Nov 04 2005 - [email protected]
-- Remove ACLOCAL_FLAGS setting as bugs fixed in bumped tarball.
-* Tue Nov 01 2005 - [email protected]
-- Set ACLOCAL_FLAGS for use in base spec file.
-* Tue Oct 25 2005 - [email protected]
-- Remove unused environment variables in %build section.
-* Mon Oct 24 2005 - [email protected]
-- Remove share package; add build and runtime dependencies.
-* Fri Oct 21 2005 - [email protected]
-- Initial spec file created.
-
--- a/base-specs/gnome-screensaver.spec Wed Jan 06 03:31:12 2010 +0000
+++ b/base-specs/gnome-screensaver.spec Wed Jan 06 13:46:32 2010 +0000
@@ -18,6 +18,12 @@
Source: http://ftp.gnome.org/pub/GNOME/sources/%{name}/2.28/%{name}-%{version}.tar.bz2
# date:2009-05-11 owner:johnf type:feature
Patch1: gnome-screensaver-01-pam-audit.diff
+
+#This patch starts the unlock dialog first.
+# date:2010-01-06 owner:jefftsai type:feature
+Patch2: gnome-screensaver-02-unlock-first.diff
+# date:2010-01-06 owner:jefftsai type:bug
+Patch3: gnome-screensaver-03-gs-debug.diff
URL: www.gnome.org
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Autoreqprov: on
@@ -57,6 +63,8 @@
%prep
%setup -q
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
# Fix for 332967.
for po in po/*.po; do
@@ -87,7 +95,9 @@
--sysconfdir=%{_sysconfdir} \
--libexecdir=%{_libexecdir} \
--localstatedir=/var/lib \
- --enable-locking
+ --enable-pam=no \
+ --with-passwd-helper=%{_libdir}/gnome-screensaver/pam-helper
+
make -j $CPUS
%install
@@ -103,6 +113,11 @@
%{_libdir}/*
%changelog
+* Wed Jan 06 2010 - [email protected]
+- Add patch -02-unlock-first. This patch can start the unlock dialog
+ process once the lock is active. The process keeps running.
+- Also add patch -03-gs-debug, this make the debug message can be
+ printed on Solaris.
* Tue May 19 2009 - [email protected]
- Bump to 2.26.1. Add patch gnome-screensaver-01-pam-audit.diff which
John Fischer wrote to add Sun Audit and Sun PAM interfaces.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gnome-screensaver-02-unlock-first.diff Wed Jan 06 13:46:32 2010 +0000
@@ -0,0 +1,294 @@
+--- gnome-screensaver-2.28.0/src/gs-window.h.orig 2010-01-06 20:59:03.390728691 +0800
++++ gnome-screensaver-2.28.0/src/gs-window.h 2010-01-04 14:00:17.572287531 +0800
+@@ -52,6 +52,7 @@
+ void (* deactivated) (GSWindow *window);
+ void (* dialog_up) (GSWindow *window);
+ void (* dialog_down) (GSWindow *window);
++ void (* dialog_timeout) (GSWindow *window);
+ } GSWindowClass;
+
+ GType gs_window_get_type (void);
+@@ -96,6 +97,9 @@
+ GtkWidget * gs_window_get_drawing_area (GSWindow *window);
+ void gs_window_clear (GSWindow *window);
+
++void gs_window_show_unlock (GSWindow *window);
++void gs_window_hide_unlock (GSWindow *window);
++
+ G_END_DECLS
+
+ #endif /* __GS_WINDOW_H */
+--- gnome-screensaver-2.28.0/src/gs-manager.c.orig 2010-01-06 20:50:45.226262893 +0800
++++ gnome-screensaver-2.28.0/src/gs-manager.c 2010-01-06 12:52:44.900096152 +0800
+@@ -504,6 +504,8 @@
+ {
+ if (manager->priv->lock_enabled) {
+ gs_manager_set_lock_active (manager, TRUE);
++ /* start the unlock dialog right after the screen is locked */
++ gs_manager_start_unlock (manager);
+ }
+
+ manager->priv->lock_timeout_id = 0;
+@@ -1137,6 +1139,17 @@
+ g_signal_emit (manager, signals [AUTH_REQUEST_END], 0);
+ }
+
++static void
++window_dialog_timeout_cb (GSWindow *window,
++ GSManager *manager)
++{
++ g_return_if_fail (manager != NULL);
++ g_return_if_fail (GS_IS_MANAGER (manager));
++
++ gs_debug ("Handling dialog timeout");
++ gs_window_hide_unlock (window);
++}
++
+ static GSWindow *
+ find_window_at_pointer (GSManager *manager)
+ {
+@@ -1381,6 +1394,7 @@
+ g_signal_handlers_disconnect_by_func (window, window_activity_cb, manager);
+ g_signal_handlers_disconnect_by_func (window, window_dialog_up_cb, manager);
+ g_signal_handlers_disconnect_by_func (window, window_dialog_down_cb, manager);
++ g_signal_handlers_disconnect_by_func (window, window_dialog_timeout_cb, manager);
+ g_signal_handlers_disconnect_by_func (window, window_show_cb, manager);
+ g_signal_handlers_disconnect_by_func (window, window_map_cb, manager);
+ g_signal_handlers_disconnect_by_func (window, window_map_event_cb, manager);
+@@ -1410,6 +1424,8 @@
+ G_CALLBACK (window_dialog_up_cb), manager, 0);
+ g_signal_connect_object (window, "dialog-down",
+ G_CALLBACK (window_dialog_down_cb), manager, 0);
++ g_signal_connect_object (window, "dialog-timeout",
++ G_CALLBACK (window_dialog_timeout_cb), manager, 0);
+ g_signal_connect_object (window, "show",
+ G_CALLBACK (window_show_cb), manager, G_CONNECT_AFTER);
+ g_signal_connect_object (window, "map",
+@@ -1771,7 +1787,7 @@
+ }
+
+ gboolean
+-gs_manager_request_unlock (GSManager *manager)
++gs_manager_start_unlock (GSManager *manager)
+ {
+ GSWindow *window;
+
+@@ -1805,6 +1821,44 @@
+ return TRUE;
+ }
+
++gboolean
++gs_manager_request_unlock (GSManager *manager)
++{
++ GSWindow *window;
++
++ g_return_val_if_fail (manager != NULL, FALSE);
++ g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
++
++ if (! manager->priv->active) {
++ gs_debug ("Request unlock but manager is not active");
++ return FALSE;
++ }
++
++ if (manager->priv->fading) {
++ gs_debug ("Request unlock so finishing fade");
++ gs_fade_finish (manager->priv->fade);
++ }
++
++ if (manager->priv->windows == NULL) {
++ gs_debug ("We don't have any windows!");
++ return FALSE;
++ }
++
++ if (manager->priv->dialog_up) {
++ /* Find the GSWindow that contains the pointer */
++ window = find_window_at_pointer (manager);
++ gs_window_show_unlock (window);
++ return TRUE;
++ }
++
++ if (!manager->priv->lock_enabled) {
++ g_signal_emit (manager, signals [DEACTIVATED], 0);
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
+ void
+ gs_manager_cancel_unlock_request (GSManager *manager)
+ {
+--- gnome-screensaver-2.28.0/src/gs-lock-plug.c.orig 2010-01-06 20:50:45.226087162 +0800
++++ gnome-screensaver-2.28.0/src/gs-lock-plug.c 2010-01-06 20:51:47.304843245 +0800
+@@ -319,11 +319,6 @@
+ static void
+ restart_cancel_timeout (GSLockPlug *plug)
+ {
+- remove_cancel_timeout (plug);
+-
+- plug->priv->cancel_timeout_id = g_timeout_add (plug->priv->timeout,
+- (GSourceFunc)dialog_timed_out,
+- plug);
+ }
+
+ void
+--- gnome-screensaver-2.28.0/src/gs-window-x11.c.orig 2010-01-06 20:50:45.226455005 +0800
++++ gnome-screensaver-2.28.0/src/gs-window-x11.c 2010-01-06 20:58:14.763298449 +0800
+@@ -102,6 +102,8 @@
+
+ GTimer *timer;
+
++ guint dialog_timeout_id;
++
+ #ifdef HAVE_SHAPE_EXT
+ int shape_event_base;
+ #endif
+@@ -112,6 +114,7 @@
+ DEACTIVATED,
+ DIALOG_UP,
+ DIALOG_DOWN,
++ DIALOG_TIMEOUT,
+ LAST_SIGNAL
+ };
+
+@@ -1072,6 +1075,52 @@
+ return result;
+ }
+
++static gboolean
++dialog_timedout (GSWindow *window)
++{
++ g_signal_emit (window, signals [DIALOG_TIMEOUT], 0);
++
++ return FALSE;
++}
++
++static void
++remove_dialog_timeout (GSWindow *window)
++{
++ if (window->priv->dialog_timeout_id > 0) {
++ g_source_remove (window->priv->dialog_timeout_id);
++ window->priv->dialog_timeout_id = 0;
++ }
++}
++
++void
++gs_window_show_unlock (GSWindow *window)
++{
++ gs_window_clear_to_background_pixmap (window);
++ set_invisible_cursor (GTK_WIDGET (window)->window, FALSE);
++
++ gtk_widget_show (window->priv->lock_socket);
++ if (window->priv->keyboard_enabled) {
++ gtk_widget_show (window->priv->keyboard_socket);
++ }
++ window->priv->dialog_timeout_id =
++ g_timeout_add (60000,
++ (GSourceFunc)dialog_timedout,
++ window);
++}
++
++void
++gs_window_hide_unlock (GSWindow *window)
++{
++ gs_window_clear (window);
++ set_invisible_cursor (GTK_WIDGET (window)->window, TRUE);
++
++ gtk_widget_hide (window->priv->lock_socket);
++ if (window->priv->keyboard_enabled) {
++ gtk_widget_hide (window->priv->keyboard_socket);
++ }
++ remove_dialog_timeout (window);
++}
++
+ static void
+ lock_plug_added (GtkWidget *widget,
+ GSWindow *window)
+@@ -1112,7 +1161,6 @@
+ GSWindow *window)
+ {
+ g_signal_handlers_disconnect_by_func (widget, keyboard_socket_destroyed, window);
+- g_signal_handlers_disconnect_by_func (widget, keyboard_plug_added, window);
+ g_signal_handlers_disconnect_by_func (widget, keyboard_plug_removed, window);
+
+ window->priv->keyboard_socket = NULL;
+@@ -1164,7 +1212,6 @@
+ {
+ g_signal_handlers_disconnect_by_func (widget, lock_socket_show, window);
+ g_signal_handlers_disconnect_by_func (widget, lock_socket_destroyed, window);
+- g_signal_handlers_disconnect_by_func (widget, lock_plug_added, window);
+ g_signal_handlers_disconnect_by_func (widget, lock_plug_removed, window);
+
+ window->priv->lock_socket = NULL;
+@@ -1183,8 +1230,6 @@
+
+ g_signal_connect (window->priv->keyboard_socket, "destroy",
+ G_CALLBACK (keyboard_socket_destroyed), window);
+- g_signal_connect (window->priv->keyboard_socket, "plug_added",
+- G_CALLBACK (keyboard_plug_added), window);
+ g_signal_connect (window->priv->keyboard_socket, "plug_removed",
+ G_CALLBACK (keyboard_plug_removed), window);
+ gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->keyboard_socket, FALSE, FALSE, 0);
+@@ -1345,8 +1390,6 @@
+ G_CALLBACK (lock_socket_show), window);
+ g_signal_connect (window->priv->lock_socket, "destroy",
+ G_CALLBACK (lock_socket_destroyed), window);
+- g_signal_connect (window->priv->lock_socket, "plug_added",
+- G_CALLBACK (lock_plug_added), window);
+ g_signal_connect (window->priv->lock_socket, "plug_removed",
+ G_CALLBACK (lock_plug_removed), window);
+
+@@ -1566,10 +1609,6 @@
+
+ gtk_widget_hide (window->priv->drawing_area);
+
+- gs_window_clear_to_background_pixmap (window);
+-
+- set_invisible_cursor (GTK_WIDGET (window)->window, FALSE);
+-
+ result = spawn_on_window (window,
+ command->str,
+ &window->priv->lock_pid,
+@@ -1889,11 +1928,11 @@
+
+ handled = FALSE;
+
+- /* if we already have a socket then don't bother */
+- if (! window->priv->lock_socket
+- && GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (window))) {
+- g_signal_emit (window, signals [ACTIVITY], 0, &handled);
+- }
++ if (GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (window))) {
++ if (window->priv->lock_socket)
++ remove_dialog_timeout (window);
++ g_signal_emit (window, signals [ACTIVITY], 0, &handled);
++ }
+
+ return handled;
+ }
+@@ -2146,6 +2185,17 @@
+ G_TYPE_NONE,
+ 0);
+
++ signals [DIALOG_TIMEOUT] =
++ g_signal_new ("dialog-timeout",
++ G_TYPE_FROM_CLASS (object_class),
++ G_SIGNAL_RUN_LAST,
++ G_STRUCT_OFFSET (GSWindowClass, dialog_timeout),
++ NULL,
++ NULL,
++ g_cclosure_marshal_VOID__VOID,
++ G_TYPE_NONE,
++ 0);
++
+ g_object_class_install_property (object_class,
+ PROP_OBSCURED,
+ g_param_spec_boolean ("obscured",
+@@ -2292,6 +2342,7 @@
+
+ remove_watchdog_timer (window);
+ remove_popup_dialog_idle (window);
++ remove_dialog_timeout (window);
+
+ if (window->priv->timer) {
+ g_timer_destroy (window->priv->timer);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/gnome-screensaver-03-gs-debug.diff Wed Jan 06 13:46:32 2010 +0000
@@ -0,0 +1,17 @@
+--- gnome-screensaver-2.28.0/src/gs-debug.h.orig 2010-01-04 13:55:30.357437050 +0800
++++ gnome-screensaver-2.28.0/src/gs-debug.h 2010-01-04 13:55:58.245752863 +0800
+@@ -28,13 +28,7 @@
+
+ G_BEGIN_DECLS
+
+-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+-#define gs_debug(...) gs_debug_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
+-#elif defined(__GNUC__) && __GNUC__ >= 3
+-#define gs_debug(...) gs_debug_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
+-#else
+-#define gs_debug(...)
+-#endif
++#define gs_debug(...) gs_debug_real (G_STRFUNC, __FILE__, __LINE__, __VA_ARGS__)
+
+ void gs_debug_init (gboolean debug,
+ gboolean to_file);