components/desktop/xscreensaver/patches/06-gtk-lock.patch
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Sun, 31 Jan 2016 19:31:13 -0800
changeset 5400 1199f8e91f50
permissions -rw-r--r--
22592978 Move xscreensaver to the Userland gate
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5400
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     1
Solaris uses the gtk unlock dialog program originally written by
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     2
Ximian & Wipro, in order to provide a dialog box that works with
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     3
the GNOME accessibility framework.   This was done as a fork of
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     4
the original xscreensaver because the maintainer would not allow
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     5
use of a toolkit in the lock dialog - he has since softened his
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     6
stance a bit, but this has not been presented to him to see if it
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     7
meets his requirements as spelled out at:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     8
        http://www.jwz.org/xscreensaver/toolkits.html
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     9
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    10
This patch also contains fixes for:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    11
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    12
15134570 SUNBT4782515 user is prompted to enter PIN or password when screen
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    13
	 	      is locked
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    14
15134983 SUNBT4783832 No date on xscreensaver-lock and warning on screen
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    15
15179562 SUNBT4931584 xscreensaver-demo cores with GTK_MODULES=gail:atk-bridge
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    16
15209082 SUNBT5039876 "User:" should not look like an input field
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    17
15209083 SUNBT5039878 "Password:" field should be focused / have flashing caret
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    18
15214348 SUNBT5059445 pam service name, screen kb and screen reader support
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    19
15220008 SUNBT5077989 Bug 147580: password input dialogue obscures GOK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    20
15220010 SUNBT5077993 Bug 147639: Gok cant automatically UI grab screensaver
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    21
	 	      preferences
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    22
15220705 SUNBT5079870 147587: password field should set ATK_ROLE_PASSWORD_TEXT
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    23
15221761 SUNBT5083155 Unable to unlock screen when running dual head
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    24
	 	      magnification
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    25
15231258 SUNBT6176524 passwdTimeoutEnable for disabled user (xscreensaver-lock)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    26
15231818 SUNBT6178584 Xscreensaver needs to use ROLE_PASSWORD_TEXT
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    27
15233078 SUNBT6182506 Screensaver dialog isn't magnified properly
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    28
15239418 SUNBT6203951 xscreensaver lockscreen translation errors for fr_FR
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    29
15252945 SUNBT6237901 Ldap and Gnome xscreensaver authentication failure
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    30
15265442 SUNBT6269444 snv_14 xscreensaver prints out gratuitous debug messages
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    31
	 	      after authentication
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    32
15280862 SUNBT6308859 xscreensaver: password lock dialog is not localized
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    33
15295912 SUNBT6346056 xscreensaver should not enable input method
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    34
15317555 SUNBT6395649 at-spi-registryd starts when screen is locked even when
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    35
	 	      accessible device support is off
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    36
15326852 SUNBT6417168 xscreensaver loops while trying to unlock a session for
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    37
	 	      a user whose password was expired
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    38
15346556 SUNBT6461887 GNOME screen lock does not prevent access to other
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    39
	 	      applications via 'alt-tab'
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    40
15352585 SUNBT6475285 xscreensaver core dumps in kill_job() after unlocking
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    41
	 	      the screen
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    42
15354012 SUNBT6478362 When the AT support is enabled, the input focus is
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    43
	 	      located at password label
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    44
15356879 SUNBT6484604 X should stop linking against -lcmd
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    45
15375976 SUNBT6520014 possible mem. leak in xscreensaver's lock.c in s11/nv
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    46
15387793 SUNBT6541240 Screen saver will lock user out of the system if they
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    47
	 	      have no password set
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    48
15405753 SUNBT6573182 after applying patch 120094-11(or later), xscreensaver
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    49
	 	      core dump
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    50
15427168 SUNBT6611183 xscreensaver needs to put Sun logos in files loaded at
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    51
	 	      runtime
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    52
15461985 SUNBT6670025 xscreensaver passwd dialog image missing in nv_85
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    53
15462355 SUNBT6670659 password dialog window remains on the screen even after
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    54
	 	      screen is unlocked
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    55
15463666 SUNBT6673036 prepare for Indiana unlock logos
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    56
15500787 SUNBT6736157 Security problem when desktop a11y support is turned on
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    57
15521700 SUNBT6769901 popup windows appearing through xscreensaver
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    58
15553552 SUNBT6825374 xscreensaver issues under Xorg
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    59
15561643 SUNBT6839026 Regression in screensaver may cause Performance
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    60
	 	      Degradation and make locked screensaver unresponsive
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    61
15565807 SUNBT6845751 xscreensaver-lock chews CPU when daemon dies while unlock
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    62
	 	      dialog is up
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    63
15568147 SUNBT6849124 xscreensaver leaves a dialog that cannot be moved/closed
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    64
	 	      after password change warning
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    65
15573881 SUNBT6857559 Nevada build was broken because of 6849124
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    66
---
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    67
 config.h.in           |    3 +
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    68
 configure.in          |   23 +-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    69
 driver/Makefile.in    |   59 +++-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    70
 driver/auth.h         |    4 +
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    71
 driver/demo-Gtk.c     |   18 +
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    72
 driver/dialog-data.h  |  131 ++++++
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    73
 driver/lock-Gtk.c     |  955 +++++++++++++++++++++++++++++++++++++++++++
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    74
 driver/lock.c         | 1083 ++++++++++++++++++++++++++++++++++++++++++++-----
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    75
 driver/passwd-pam.c   |  207 +++++++++-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    76
 driver/passwd.c       |    1 +
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    77
 driver/setuid.c       |    5 +-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    78
 driver/subprocs.c     |   35 ++-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    79
 driver/timers.c       |  110 +++++-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    80
 driver/types.h        |   18 +
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    81
 driver/windows.c      |   21 +-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    82
 driver/xscreensaver.c |  131 ++++++-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    83
 driver/xscreensaver.h |    6 +
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    84
 17 files changed, 2663 insertions(+), 147 deletions(-)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    85
 create mode 100644 driver/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    86
 create mode 100644 driver/lock-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    87
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    88
diff --git a/config.h.in b/config.h.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    89
--- a/config.h.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    90
+++ b/config.h.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    91
@@ -384,6 +384,9 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    92
    make use of this if it is available. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    93
 #undef HAVE_XPM
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    94
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    95
+/* Define this to build the external lock dialog */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    96
+#undef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    97
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    98
 /* Define this if you have the X Shared Memory Extension. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    99
 #undef HAVE_XSHM_EXTENSION
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   100
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   101
diff --git a/configure.in b/configure.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   102
--- a/configure.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   103
+++ b/configure.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   104
@@ -2531,6 +2531,8 @@ if test "$with_gtk" = yes; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   105
   pkg_check_version        libglade-2.0  1.99.0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   106
   pkg_check_version      gdk-pixbuf-2.0  2.0.0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   107
   pkg_check_version gdk-pixbuf-xlib-2.0  2.0.0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   108
+  pkg_check_version           gconf-2.0  2.6.1
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   109
+  pkg_check_version  libloginhelper-1.0  1.0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   110
   have_gtk="$ok"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   111
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   112
   if test "$have_gtk" = no; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   113
@@ -2546,6 +2548,9 @@ if test "$with_gtk" = yes; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   114
   fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   115
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   116
   if test "$have_gtk" = yes; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   117
+#--- Begin SUNW addition
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   118
+    AC_DEFINE(HAVE_XSCREENSAVER_LOCK,[],[Define this to build the external lock dialog])
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   119
+#--- End SUNW addition
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   120
     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   121
                    [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   122
     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   123
@@ -3642,6 +3647,16 @@ if test "$have_gtk" = yes; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   124
   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   125
 fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   126
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   127
+#--- Begin SUNW addition
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   128
+PREFERRED_LOCK_PROGRAM=
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   129
+ALL_LOCK_PROGRAMS=
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   130
+LOCK_PROGRAM=
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   131
+if test "$have_gtk" = yes; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   132
+  PREFERRED_LOCK_PROGRAM=xscreensaver-lock-Gtk
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   133
+  ALL_LOCK_PROGRAMS="$PREFERRED_LOCK_PROGRAM $ALL_LOCK_PROGRAMS"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   134
+  LOCK_PROGRAM=xscreensaver-lock
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   135
+fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   136
+#--- End SUNW addition
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   137
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   138
 if test "$have_kerberos" = yes; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   139
   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   140
@@ -3781,6 +3796,11 @@ AC_SUBST(INCLUDES)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   141
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   142
 AC_SUBST(PREFERRED_DEMO_PROGRAM)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   143
 AC_SUBST(ALL_DEMO_PROGRAMS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   144
+#--- Begin SUNW addition
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   145
+AC_SUBST(PREFERRED_LOCK_PROGRAM)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   146
+AC_SUBST(ALL_LOCK_PROGRAMS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   147
+AC_SUBST(LOCK_PROGRAM)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   148
+#--- End SUNW addition
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   149
 AC_SUBST(SAVER_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   150
 AC_SUBST(MOTIF_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   151
 AC_SUBST(GTK_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   152
@@ -4260,7 +4280,8 @@ HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   153
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   154
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   155
 # Sanity check the hackdir
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   156
-for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   157
+# SUNW addition: added xscreensaver-lock to list on next line
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   158
+for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command xscreensaver-lock ; do
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   159
   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   160
     echo ""
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   161
     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   162
diff --git a/driver/Makefile.in b/driver/Makefile.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   163
--- a/driver/Makefile.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   164
+++ b/driver/Makefile.in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   165
@@ -29,6 +29,7 @@ GTK_APPDIR	= $(GTK_DATADIR)/applications
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   166
 GTK_ICONDIR	= $(GTK_DATADIR)/pixmaps
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   167
 GTK_GLADEDIR	= $(prefix)/lib/xscreensaver/config
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   168
 HACK_CONF_DIR	= @HACK_CONF_DIR@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   169
+LOCK_DIR	= $(libexecdir)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   170
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   171
 CC		= @CC@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   172
 OBJCC		= @OBJCC@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   173
@@ -42,6 +43,7 @@ SUBP_DEFS	= $(DEFS) -DHACK_PATH='"@HACKDIR@"' \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   174
 GTK_DEFS	= $(DEFS) -DDEFAULT_ICONDIR='"$(GTK_GLADEDIR)"' \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   175
 			-DBINDIR='"$(bindir)"'
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   176
 CONF_DEFS	= -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"'
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   177
+LOCK_DEFS	= $(DEFS) -DLOCKDIR=\"$(LOCK_DIR)\"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   178
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   179
 LIBS		= @LIBS@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   180
 INTL_LIBS	= @INTLLIBS@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   181
@@ -100,6 +102,8 @@ GTK_SRCS	= demo-Gtk.c demo-Gtk-conf.c \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   182
 		  demo-Gtk-widgets.c demo-Gtk-support.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   183
 GTK_EXTRA_OBJS  = demo-Gtk-widgets.o demo-Gtk-support.o
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   184
 GTK_OBJS	= demo-Gtk.o demo-Gtk-conf.o @GTK_EXTRA_OBJS@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   185
+GTK_LOCK_SRCS	= lock-Gtk.c atoms.c remote.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   186
+GTK_LOCK_OBJS	= lock-Gtk.o atoms.o remote.o
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   187
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   188
 PWENT_SRCS	= passwd-pwent.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   189
 PWENT_OBJS	= passwd-pwent.o
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   190
@@ -219,8 +223,8 @@ GETIMG_LIBS	= $(LIBS) $(X_LIBS) $(XPM_LIBS) $(JPEG_LIBS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   191
 		  $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   192
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   193
 EXES		= xscreensaver xscreensaver-command xscreensaver-demo \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   194
-		  xscreensaver-getimage @EXES_OSX@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   195
-EXES2		= @ALL_DEMO_PROGRAMS@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   196
+		  xscreensaver-getimage @EXES_OSX@ @LOCK_PROGRAM@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   197
+EXES2		= @ALL_DEMO_PROGRAMS@ @ALL_LOCK_PROGRAMS@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   198
 EXES_OSX	= pdf2jpeg
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   199
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   200
 SCRIPTS_1	= xscreensaver-getimage-file xscreensaver-getimage-video \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   201
@@ -250,7 +254,7 @@ VMSFILES	= compile_axp.com compile_decc.com link_axp.com link_decc.com \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   202
 		  vms-getpwnam.c vms-pwd.h vms-hpwd.c vms-validate.c \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   203
 		  vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   204
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   205
-TARFILES	= $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   206
+TARFILES	= $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) $(GTK_LOCK_SRCS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   207
 		  $(MOTIF_SRCS) $(GTK_SRCS) $(PWENT_SRCS) $(PWHELPER_SRCS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   208
 		  $(KERBEROS_SRCS) $(PAM_SRCS) $(LOCK_SRCS_1) $(DEMO_SRCS_1) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   209
 		  $(CMD_SRCS) $(GETIMG_SRCS_1) $(PDF2JPEG_SRCS) $(HDRS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   210
@@ -263,7 +267,7 @@ all: $(EXES) $(EXES2)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   211
 tests: $(TEST_EXES)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   212
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   213
 install:   install-program   install-ad    install-scripts \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   214
-	   install-gnome     install-man   install-xml install-pam
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   215
+	   install-gnome     install-man   install-xml
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   216
 uninstall: uninstall-program uninstall-ad  \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   217
 	   uninstall-gnome   uninstall-man uninstall-xml  
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   218
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   219
@@ -275,6 +279,9 @@ install-program: $(EXES)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   220
 	@if [ ! -d $(install_prefix)$(bindir) ]; then			\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   221
 	  $(INSTALL_DIRS) $(install_prefix)$(bindir) ;			\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   222
 	 fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   223
+	@if [ -n "@LOCK_PROGRAM@" -a ! -d $(install_prefix)$(LOCK_DIR) ]; then \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   224
+	  $(INSTALL_DIRS) $(install_prefix)$(LOCK_DIR) ; 		\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   225
+	 fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   226
 	@inst="$(INSTALL_PROGRAM)" ;					\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   227
 	if [ @NEED_SETUID@ = yes ]; then				\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   228
 	   me=`PATH="$$PATH:/usr/ucb" whoami` ;				\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   229
@@ -303,6 +310,12 @@ install-program: $(EXES)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   230
 	  echo $(INSTALL_PROGRAM) $$exe $(install_prefix)$(bindir)/$$exe ; \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   231
 	       $(INSTALL_PROGRAM) $$exe $(install_prefix)$(bindir)/$$exe ; \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   232
 	 done
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   233
+	@if [ -n "@LOCK_PROGRAM@" ]; then				     \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   234
+	  echo $(INSTALL_PROGRAM) xscreensaver-lock \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   235
+	    $(install_prefix)$(LOCK_DIR)/xscreensaver-lock ; \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   236
+	   $(INSTALL_PROGRAM) xscreensaver-lock \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   237
+	    $(install_prefix)$(LOCK_DIR)/xscreensaver-lock ; \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   238
+	fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   239
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   240
 install-ad: XScreenSaver.ad
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   241
 	@if [ ! -d $(install_prefix)$(AD_DIR) ]; then			      \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   242
@@ -738,7 +751,7 @@ $(SAVER_UTIL_OBJS):
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   243
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   244
 # How we build object files in this directory.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   245
 .c.o:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   246
-	$(CC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   247
+	$(CC) -c $(INCLUDES) $(DEFS) $(INTL_DEFS) $(CFLAGS) $(X_CFLAGS) $<
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   248
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   249
 .m.o:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   250
 	$(OBJCC) -c $(INCLUDES) $(DEFS) $(CFLAGS) $(X_CFLAGS) $<
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   251
@@ -764,6 +777,16 @@ demo-Gtk-conf.o: demo-Gtk-conf.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   252
 	$(CC) -c $(INCLUDES) $(CONF_DEFS) $(GTK_DEFS) $(CFLAGS) $(X_CFLAGS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   253
 	  $(srcdir)/demo-Gtk-conf.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   254
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   255
+# lock takes an extra -D option.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   256
+lock.o:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   257
+	$(CC) -c $(INCLUDES) $(LOCK_DEFS) $(CFLAGS) $(X_CFLAGS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   258
+	  $(srcdir)/lock.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   259
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   260
+# lock-Gtk takes extra -D and -I options.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   261
+lock-Gtk.o: lock-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   262
+	$(CC) -c $(INCLUDES) -I$(ICON_SRC) $(GTK_DEFS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   263
+	  $(CFLAGS) $(X_CFLAGS) $(INTL_DEFS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   264
+	  $(srcdir)/lock-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   265
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   266
 # How we build the default app-defaults file into the program.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   267
 #
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   268
@@ -778,7 +801,8 @@ XScreenSaver_Xm_ad.h: XScreenSaver-Xm.ad
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   269
 # The executables linked in this directory.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   270
 #
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   271
 xscreensaver: $(SAVER_OBJS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   272
-	$(CC) $(LDFLAGS) -o $@ $(SAVER_OBJS) $(SAVER_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   273
+	$(CC) $(LDFLAGS) -o $@ $(SAVER_OBJS) $(SAVER_LIBS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   274
+	-lgconf-2 -lgobject-2.0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   275
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   276
 xscreensaver-command: $(CMD_OBJS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   277
 	$(CC) $(LDFLAGS) -o $@ $(CMD_OBJS) $(CMD_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   278
@@ -794,6 +818,15 @@ xscreensaver-demo: @PREFERRED_DEMO_PROGRAM@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   279
 	       cp -p @PREFERRED_DEMO_PROGRAM@@EXEEXT@ $@@EXEEXT@      ;	\
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   280
 	fi
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   281
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   282
+xscreensaver-lock: @PREFERRED_LOCK_PROGRAM@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   283
+	$(INSTALL_PROGRAM) @PREFERRED_LOCK_PROGRAM@ $@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   284
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   285
+xscreensaver-lock-Gtk: $(GTK_LOCK_OBJS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   286
+	$(CC) $(LDFLAGS) -o $@ $(GTK_LOCK_OBJS) $(LIBS) $(X_LIBS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   287
+	$(GTK_LIBS) $(XML_LIBS) $(X_PRE_LIBS) -lXt -lX11 \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   288
+	$(XDPMS_LIBS) -lXext \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   289
+	$(X_EXTRA_LIBS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   290
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   291
 xscreensaver-demo-Xm: $(DEMO_OBJS) $(MOTIF_OBJS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   292
 	$(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(MOTIF_OBJS) $(LIBS) $(X_LIBS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   293
 	$(MOTIF_LIBS) $(INTL_LIBS) $(X_PRE_LIBS) -lXt -lX11 \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   294
@@ -817,7 +850,7 @@ pdf2jpeg: $(PDF2JPEG_OBJS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   295
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   296
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   297
 TEST_PASSWD_OBJS = test-passwd.o $(LOCK_OBJS_1) $(PASSWD_OBJS) \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   298
-	 subprocs.o setuid.o splash.o prefs.o mlstring.o exec.o \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   299
+	 subprocs.o setuid.o splash.o prefs.o mlstring.o \
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   300
 	$(SAVER_UTIL_OBJS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   301
 test-passwd.o: XScreenSaver_ad.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   302
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   303
@@ -907,8 +940,14 @@ dpms.o: $(srcdir)/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   304
 dpms.o: $(srcdir)/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   305
 exec.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   306
 exec.o: $(srcdir)/exec.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   307
+lock-Gtk.o: $(srcdir)/atoms.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   308
+lock-Gtk.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   309
+lock-Gtk.o: $(srcdir)/remote.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   310
+lock-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   311
 lock.o: $(srcdir)/auth.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   312
 lock.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   313
+lock.o: $(srcdir)/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   314
+lock.o: $(srcdir)/exec.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   315
 lock.o: $(srcdir)/mlstring.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   316
 lock.o: $(srcdir)/prefs.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   317
 lock.o: $(srcdir)/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   318
@@ -917,6 +956,8 @@ lock.o: $(srcdir)/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   319
 mlstring.o: $(srcdir)/mlstring.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   320
 passwd.o: $(srcdir)/auth.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   321
 passwd.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   322
+passwd.o: $(srcdir)/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   323
+passwd.o: $(srcdir)/mlstring.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   324
 passwd.o: $(srcdir)/prefs.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   325
 passwd.o: $(srcdir)/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   326
 passwd.o: $(srcdir)/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   327
@@ -984,6 +1025,8 @@ test-vp.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   328
 test-xdpms.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   329
 test-xinerama.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   330
 timers.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   331
+timers.o: $(srcdir)/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   332
+timers.o: $(srcdir)/mlstring.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   333
 timers.o: $(srcdir)/prefs.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   334
 timers.o: $(srcdir)/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   335
 timers.o: $(srcdir)/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   336
@@ -1011,6 +1054,8 @@ xscreensaver-getimage.o: $(UTILS_SRC)/yarandom.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   337
 xscreensaver.o: XScreenSaver_ad.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   338
 xscreensaver.o: $(srcdir)/auth.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   339
 xscreensaver.o: ../config.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   340
+xscreensaver.o: $(srcdir)/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   341
+xscreensaver.o: $(srcdir)/mlstring.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   342
 xscreensaver.o: $(srcdir)/prefs.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   343
 xscreensaver.o: $(srcdir)/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   344
 xscreensaver.o: $(UTILS_SRC)/resources.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   345
diff --git a/driver/auth.h b/driver/auth.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   346
--- a/driver/auth.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   347
+++ b/driver/auth.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   348
@@ -51,4 +51,8 @@ xss_authenticate(saver_info *si, Bool verbose_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   349
 void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   350
 auth_finished_cb (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   351
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   352
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   353
+extern int write_to_child (saver_info* si, const char* cmd, const char *msg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   354
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   355
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   356
 #endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   357
diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   358
--- a/driver/demo-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   359
+++ b/driver/demo-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   360
@@ -98,6 +98,8 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   361
 # define G_MODULE_EXPORT /**/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   362
 #endif /* !HAVE_GTK2 */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   363
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   364
+#include <gconf/gconf-client.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   365
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   366
 #if defined(DEFAULT_ICONDIR) && !defined(GLADE_DIR)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   367
 # define GLADE_DIR DEFAULT_ICONDIR
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   368
 #endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   369
@@ -5024,6 +5026,22 @@ main (int argc, char **argv)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   370
   load_init_file (dpy, p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   371
   initialize_sort_map (s);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   372
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   373
+  /* Bug 147639: Gok cant automatically UI grab screensaver preferences */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   374
+  {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   375
+    GConfClient *client = gconf_client_get_default ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   376
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   377
+#define KEY "/desktop/gnome/interface/accessibility"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   378
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   379
+    /* check if accessibilty mode is enabled */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   380
+    if (gconf_client_get_bool (client, KEY, NULL))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   381
+      {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   382
+	/* GTK Accessibility Module initialized */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   383
+	const char *modulesptr = g_getenv ("GTK_MODULES");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   384
+	if (!modulesptr || (modulesptr [0] == '\0'))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   385
+	  putenv ("GTK_MODULES=gail:atk-bridge");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   386
+      }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   387
+  }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   388
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   389
   /* Now that Xt has been initialized, and the resources have been read,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   390
      we can set our `progname' variable to something more in line with
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   391
      reality.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   392
diff --git a/driver/dialog-data.h b/driver/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   393
new file mode 100644
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   394
--- /dev/null
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   395
+++ b/driver/dialog-data.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   396
@@ -0,0 +1,131 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   397
+/* xscreensaver, Copyright (c) 1993-2008 Jamie Zawinski <[email protected]>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   398
+ *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   399
+ * Permission to use, copy, modify, distribute, and sell this software and its
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   400
+ * documentation for any purpose is hereby granted without fee, provided that
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   401
+ * the above copyright notice appear in all copies and that both that
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   402
+ * copyright notice and this permission notice appear in supporting
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   403
+ * documentation.  No representations are made about the suitability of this
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   404
+ * software for any purpose.  It is provided "as is" without express or
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   405
+ * implied warranty.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   406
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   407
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   408
+#ifndef __DIALOG_DATA_H__
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   409
+#define __DIALOG_DATA_H__
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   410
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   411
+#include <stdio.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   412
+#include "types.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   413
+#include "mlstring.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   414
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   415
+#define MAX_BYTES_PER_CHAR 8	/* UTF-8 uses no more than 3, I think */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   416
+#define MAX_PASSWD_CHARS   128	/* Longest possible passphrase */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   417
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   418
+struct passwd_dialog_data {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   419
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   420
+  saver_screen_info *prompt_screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   421
+  int previous_mouse_x, previous_mouse_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   422
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   423
+  /* "Characters" in the password may be a variable number of bytes long.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   424
+     typed_passwd contains the raw bytes.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   425
+     typed_passwd_char_size indicates the size in bytes of each character,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   426
+     so that we can make backspace work.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   427
+   */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   428
+  char typed_passwd [MAX_PASSWD_CHARS * MAX_BYTES_PER_CHAR];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   429
+  char typed_passwd_char_size [MAX_PASSWD_CHARS];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   430
+  
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   431
+  XtIntervalId timer;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   432
+  int i_beam;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   433
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   434
+  float ratio;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   435
+  Position x, y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   436
+  Dimension width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   437
+  Dimension height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   438
+  Dimension border_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   439
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   440
+  Bool echo_input;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   441
+  Bool show_stars_p; /* "I regret that I have but one asterisk for my country."
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   442
+                        -- Nathan Hale, 1776. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   443
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   444
+  char *heading_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   445
+  char *body_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   446
+  char *user_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   447
+  mlstring *info_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   448
+  /* The entry field shall only be displayed if prompt_label is not NULL */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   449
+  mlstring *prompt_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   450
+  char *date_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   451
+  char *passwd_string;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   452
+  Bool passwd_changed_p; /* Whether the user entry field needs redrawing */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   453
+  Bool caps_p;           /* Whether we saw a keypress with caps-lock on */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   454
+  char *unlock_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   455
+  char *login_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   456
+  char *uname_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   457
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   458
+  Bool show_uname_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   459
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   460
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   461
+  XFontStruct *heading_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   462
+  XFontStruct *body_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   463
+  XFontStruct *label_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   464
+  XFontStruct *passwd_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   465
+  XFontStruct *date_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   466
+  XFontStruct *button_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   467
+  XFontStruct *uname_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   468
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   469
+  Pixel foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   470
+  Pixel background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   471
+  Pixel border;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   472
+  Pixel passwd_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   473
+  Pixel passwd_background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   474
+  Pixel thermo_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   475
+  Pixel thermo_background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   476
+  Pixel shadow_top;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   477
+  Pixel shadow_bottom;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   478
+  Pixel button_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   479
+  Pixel button_background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   480
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   481
+  Dimension preferred_logo_width, logo_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   482
+  Dimension preferred_logo_height, logo_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   483
+  Dimension thermo_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   484
+  Dimension internal_border;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   485
+  Dimension shadow_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   486
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   487
+  Dimension passwd_field_x, passwd_field_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   488
+  Dimension passwd_field_width, passwd_field_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   489
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   490
+  Dimension unlock_button_x, unlock_button_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   491
+  Dimension unlock_button_width, unlock_button_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   492
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   493
+  Dimension login_button_x, login_button_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   494
+  Dimension login_button_width, login_button_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   495
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   496
+  Dimension thermo_field_x, thermo_field_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   497
+  Dimension thermo_field_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   498
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   499
+  Pixmap logo_pixmap;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   500
+  Pixmap logo_clipmask;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   501
+  int logo_npixels;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   502
+  unsigned long *logo_pixels;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   503
+#endif /* ! HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   504
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   505
+  Cursor passwd_cursor;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   506
+  Bool unlock_button_down_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   507
+  Bool login_button_down_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   508
+  Bool login_button_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   509
+  Bool login_button_enabled_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   510
+  Bool button_state_changed_p; /* Refers to both buttons */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   511
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   512
+  Pixmap save_under;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   513
+  Pixmap user_entry_pixmap;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   514
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   515
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   516
+  /* extern passwd dialog stuff */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   517
+  XtInputId stdout_input_id;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   518
+  int       stdin_fd;    /* child's stdin - parent writes to this */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   519
+  int       stdout_fd;   /* child's stdout - parent reads from this */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   520
+  FILE     *stdin_file;  /* child's stdin - parent writes to this */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   521
+  FILE     *stdout_file; /* child's stdout - parent reads from this */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   522
+  Bool      got_windowid;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   523
+  Bool      got_passwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   524
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   525
+};
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   526
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   527
+#endif /* __DIALOG_DATA_H__ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   528
diff --git a/driver/lock-Gtk.c b/driver/lock-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   529
new file mode 100644
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   530
--- /dev/null
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   531
+++ b/driver/lock-Gtk.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   532
@@ -0,0 +1,955 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   533
+/* lock-Gtk.c -- a GTK+ password dialog for xscreensaver
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   534
+ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <[email protected]>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   535
+ *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   536
+ * Permission to use, copy, modify, distribute, and sell this software and its
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   537
+ * documentation for any purpose is hereby granted without fee, provided that
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   538
+ * the above copyright notice appear in all copies and that both that
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   539
+ * copyright notice and this permission notice appear in supporting
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   540
+ * documentation.  No representations are made about the suitability of this
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   541
+ * software for any purpose.  It is provided "as is" without express or
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   542
+ * implied warranty.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   543
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   544
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   545
+/* GTK+ locking code written by Jacob Berkman  <[email protected]> for
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   546
+ *  Sun Microsystems.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   547
+ *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   548
+ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   549
+ *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   550
+ * Permission is hereby granted, free of charge, to any person obtaining a
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   551
+ * copy of this software and associated documentation files (the "Software"),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   552
+ * to deal in the Software without restriction, including without limitation
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   553
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   554
+ * and/or sell copies of the Software, and to permit persons to whom the
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   555
+ * Software is furnished to do so, subject to the following conditions:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   556
+ *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   557
+ * The above copyright notice and this permission notice (including the next
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   558
+ * paragraph) shall be included in all copies or substantial portions of the
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   559
+ * Software.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   560
+ *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   561
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   562
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   563
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   564
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   565
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   566
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   567
+ * DEALINGS IN THE SOFTWARE.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   568
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   569
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   570
+#ifdef HAVE_CONFIG_H
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   571
+# include "config.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   572
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   573
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   574
+#ifdef HAVE_GTK2 /* whole file */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   575
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   576
+#include <xscreensaver-intl.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   577
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   578
+#include <unistd.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   579
+#include <errno.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   580
+#include <string.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   581
+#include <time.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   582
+#include <stdlib.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   583
+#include <stdio.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   584
+#include <fcntl.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   585
+#include <sys/types.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   586
+#include <sys/stat.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   587
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   588
+#include <gtk/gtk.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   589
+#include <gdk/gdkx.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   590
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   591
+/* AT-enabled */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   592
+#include <stdio.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   593
+#include <ctype.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   594
+#include <X11/Xos.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   595
+#include <X11/Xlib.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   596
+#include <X11/Xatom.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   597
+#include <X11/Xutil.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   598
+#include <X11/Xmu/WinUtil.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   599
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   600
+#include <gconf/gconf-client.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   601
+#include <libbonobo.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   602
+#include <login-helper/Accessibility_LoginHelper.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   603
+#include <atk/atkobject.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   604
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   605
+#include "remote.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   606
+#include "atoms.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   607
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   608
+#if GTK_CHECK_VERSION(2,14,0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   609
+# define GET_WINDOW(w)          gtk_widget_get_window (w)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   610
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   611
+# define GET_WINDOW(w)          ((w)->window)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   612
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   613
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   614
+static Atom XA_UNLOCK_RATIO;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   615
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   616
+typedef struct {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   617
+  GtkWidget *dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   618
+  GtkWidget *user_prompt_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   619
+  GtkWidget *user_input_entry;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   620
+  GtkWidget *progress;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   621
+  GtkWidget *button;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   622
+  GtkWidget *msg_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   623
+  GtkWidget *pam_message_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   624
+} PasswdDialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   625
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   626
+/*Global info */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   627
+#define MAXRAISEDWINS  2
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   628
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   629
+char *progname = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   630
+FILE *parent_file = NULL; /* child writes to parent on this */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   631
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   632
+#define FD_TO_PARENT  9
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   633
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   634
+/* Send a command to the xscreensaver parent daemon
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   635
+   Arguments:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   636
+    - msg - type of message - "input", "raise_wid", etc.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   637
+    - data - data for message
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   638
+    - flush - whether to flush now or allow stdio to buffer
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   639
+   Message format sent to parent:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   640
+    "msg\n" if no data, otherwise "msg=data\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   641
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   642
+   Can be used to flush previously buffered messages by calling
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   643
+   with NULL msg & data, and TRUE for flush.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   644
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   645
+static int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   646
+write_to_parent (const char* msg, const char *data, gboolean flush)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   647
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   648
+  int len = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   649
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   650
+  /*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   651
+  fprintf (stderr, "-->Child write_to_parent() string to send is: %s=%s\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   652
+           msg, data ? data : "(null)");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   653
+  fflush (stderr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   654
+  */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   655
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   656
+  if (msg)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   657
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   658
+      if (data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   659
+        len = fprintf (parent_file, "%s=%s\n", msg, data);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   660
+      else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   661
+        len = fprintf (parent_file, "%s\n", msg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   662
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   663
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   664
+  if (flush)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   665
+    fflush (parent_file);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   666
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   667
+  return len;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   668
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   669
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   670
+/* Send parent a message with a window id as the data */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   671
+static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   672
+write_windowid (const char* msg, Window w)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   673
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   674
+  char s[16]; /* more than long enough to hold a 32-bit integer + '\0' */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   675
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   676
+  snprintf(s, sizeof(s), "0x%lx", w);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   677
+  write_to_parent(msg, s, FALSE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   678
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   679
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   680
+static GtkWidget *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   681
+load_unlock_logo_image (void)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   682
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   683
+  const char *logofile;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   684
+  struct stat statbuf;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   685
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   686
+  logofile = DEFAULT_ICONDIR "/unlock-logo.png";
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   687
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   688
+  if (stat (logofile, &statbuf) != 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   689
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   690
+      logofile = DEFAULT_ICONDIR "/logo-180.gif"; /* fallback */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   691
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   692
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   693
+  return gtk_image_new_from_file (logofile);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   694
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   695
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   696
+/* Create unlock dialog */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   697
+static PasswdDialog *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   698
+make_dialog (gboolean center_pos)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   699
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   700
+  GtkWidget *dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   701
+  AtkObject *atk_dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   702
+  GtkWidget *frame1, *frame2;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   703
+  GtkWidget *vbox;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   704
+  GtkWidget *hbox1, *hbox2;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   705
+  GtkWidget *bbox;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   706
+  GtkWidget *vbox2;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   707
+  GtkWidget *entry;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   708
+  AtkObject *atk_entry;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   709
+  GtkWidget *title_label, *msg_label, *prompt_label,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   710
+    *user_label, *date_label, *pam_msg_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   711
+  AtkObject *atk_title_label, *atk_prompt_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   712
+  GtkWidget *button;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   713
+  GtkWidget *image;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   714
+  GtkWidget *progress;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   715
+  char *version;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   716
+  char *user;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   717
+  char *host;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   718
+  char *s;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   719
+  gchar *format_string_locale, *format_string_utf8;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   720
+  PasswdDialog *pwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   721
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   722
+  /* taken from lock.c */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   723
+  char buf[256];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   724
+  gchar *utf8_format;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   725
+  time_t now = time (NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   726
+  struct tm* tm;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   727
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   728
+  server_xscreensaver_version (GDK_DISPLAY (), &version, &user, &host);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   729
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   730
+  if (!version)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   731
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   732
+      fprintf (stderr, "%s: no xscreensaver running on display %s, exiting.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   733
+               progname, gdk_get_display ());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   734
+      exit (1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   735
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   736
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   737
+  /* PUSH */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   738
+  gtk_widget_push_colormap (gdk_rgb_get_cmap ());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   739
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   740
+  pwd = g_new0 (PasswdDialog, 1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   741
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   742
+  dialog = gtk_window_new (GTK_WINDOW_POPUP);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   743
+  pwd->dialog = dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   744
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   745
+  /*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   746
+  ** bugid: 5077989(P2)Bug 147580: password input dialogue obscures GOK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   747
+     gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   748
+     bugid: 5002244:  scr unlock dialog incompatible with MAG technique
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   749
+  ** 6182506: scr dialog is obscured by MAG window
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   750
+  */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   751
+  if (center_pos)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   752
+    gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   753
+  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   754
+    gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   755
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   756
+  gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); /*mali99 irritating*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   757
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   758
+  /* AT-enabled dialog role = frame */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   759
+  atk_dialog = gtk_widget_get_accessible (dialog);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   760
+  atk_object_set_description (atk_dialog, _("screen unlock dialog"));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   761
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   762
+  /* frame */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   763
+  frame1 = g_object_new (GTK_TYPE_FRAME,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   764
+                         "shadow", GTK_SHADOW_OUT,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   765
+                         NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   766
+  gtk_container_add (GTK_CONTAINER (dialog), frame1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   767
+  /* AT role = panel */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   768
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   769
+  /* vbox */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   770
+  vbox = gtk_vbox_new (FALSE, 10);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   771
+  gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   772
+  gtk_container_add (GTK_CONTAINER (frame1), vbox);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   773
+  /* AT role= filler(default) */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   774
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   775
+  /* hbox */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   776
+  hbox1 = gtk_hbox_new (FALSE, 5);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   777
+  gtk_box_pack_start (GTK_BOX (vbox), hbox1,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   778
+                      TRUE, TRUE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   779
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   780
+  /* image frame */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   781
+  frame2 = g_object_new (GTK_TYPE_FRAME,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   782
+                         "shadow", GTK_SHADOW_ETCHED_IN,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   783
+                         NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   784
+  gtk_box_pack_start (GTK_BOX (hbox1), frame2,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   785
+                      TRUE, TRUE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   786
+  /* AT role= filler(default) */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   787
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   788
+  /* image */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   789
+  image = load_unlock_logo_image ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   790
+  /* AT role = icon */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   791
+  gtk_container_add (GTK_CONTAINER (frame2), image);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   792
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   793
+  /* progress thingie */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   794
+  progress = g_object_new (GTK_TYPE_PROGRESS_BAR,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   795
+                           "orientation", GTK_PROGRESS_BOTTOM_TO_TOP,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   796
+                           "fraction", 1.0,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   797
+                           NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   798
+  gtk_box_pack_start (GTK_BOX (hbox1), progress,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   799
+                      FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   800
+  pwd->progress = progress;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   801
+  atk_object_set_description (gtk_widget_get_accessible (progress),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   802
+            _("Percent of time you have left to unlock the screen."));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   803
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   804
+  /* text fields */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   805
+  vbox2 = gtk_vbox_new (FALSE, 20);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   806
+  gtk_box_pack_start (GTK_BOX (hbox1), vbox2,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   807
+                      TRUE, TRUE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   808
+  /* AT role =filler */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   809
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   810
+  s = g_markup_printf_escaped ("<span size=\"xx-large\"><b>%s </b></span>",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   811
+                               _("Screensaver"));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   812
+  /* XScreenSaver foo label */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   813
+  title_label = g_object_new (GTK_TYPE_LABEL,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   814
+                              "use-markup", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   815
+                              "label", s,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   816
+                              NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   817
+  g_free (s);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   818
+  gtk_box_pack_start (GTK_BOX (vbox2), title_label,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   819
+                      FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   820
+  /* AT role = label prog name */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   821
+  atk_title_label = gtk_widget_get_accessible (title_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   822
+  atk_object_add_relationship (atk_title_label, ATK_RELATION_LABEL_FOR,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   823
+                               atk_dialog);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   824
+  atk_object_add_relationship (atk_dialog, ATK_RELATION_LABELLED_BY,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   825
+                               atk_title_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   826
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   827
+  /* This display is locked. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   828
+  msg_label = g_object_new (GTK_TYPE_LABEL,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   829
+                            "use-markup", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   830
+                            "label", _("<b>This display is locked.</b>"),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   831
+                            NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   832
+  pwd->msg_label = msg_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   833
+  gtk_box_pack_start (GTK_BOX (vbox2), msg_label,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   834
+                      FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   835
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   836
+  /* User information */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   837
+  s = g_strdup_printf (_("User: %s"), user ? user : "");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   838
+  user_label = g_object_new (GTK_TYPE_LABEL,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   839
+                             "label", s,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   840
+                             "use_underline", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   841
+                             NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   842
+  g_free(s);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   843
+  gtk_label_set_width_chars (GTK_LABEL (user_label), 35);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   844
+  gtk_box_pack_start (GTK_BOX (vbox2), user_label, FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   845
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   846
+  /* User input */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   847
+  hbox2 = gtk_widget_new (GTK_TYPE_HBOX,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   848
+                          "border_width", 5,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   849
+                          "visible", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   850
+                          "homogeneous", FALSE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   851
+                          "spacing", 1,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   852
+                          NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   853
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   854
+  /* PAM prompt */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   855
+  prompt_label = g_object_new (GTK_TYPE_LABEL,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   856
+                               /* blank space for prompt */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   857
+                               "label", _("         "),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   858
+                               "use_underline", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   859
+                               "use_markup", FALSE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   860
+                               "justify", GTK_JUSTIFY_CENTER,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   861
+                               "wrap", FALSE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   862
+                               "selectable", FALSE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   863
+                               "xalign", 1.0,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   864
+                               "xpad", 0,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   865
+                               "ypad", 0,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   866
+                               "visible", FALSE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   867
+                               NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   868
+  pwd->user_prompt_label = prompt_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   869
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   870
+  entry = g_object_new (GTK_TYPE_ENTRY,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   871
+                        "activates-default", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   872
+                        "visible", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   873
+                        "editable", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   874
+                        "visibility", FALSE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   875
+                        "can_focus", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   876
+                        NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   877
+  pwd->user_input_entry = entry;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   878
+  /* gtk_widget_grab_focus (entry); */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   879
+  atk_entry = gtk_widget_get_accessible (entry);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   880
+  atk_object_set_role (atk_entry, ATK_ROLE_PASSWORD_TEXT);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   881
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   882
+  /* AT role = label for input widget */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   883
+  atk_prompt_label = gtk_widget_get_accessible (prompt_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   884
+  atk_object_add_relationship (atk_prompt_label, ATK_RELATION_LABEL_FOR,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   885
+                               atk_entry);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   886
+  atk_object_add_relationship (atk_entry, ATK_RELATION_LABELLED_BY,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   887
+                               atk_prompt_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   888
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   889
+  gtk_box_pack_start (GTK_BOX (hbox2), prompt_label, FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   890
+  gtk_box_pack_end (GTK_BOX (hbox2), entry, TRUE, TRUE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   891
+  gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   892
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   893
+  pam_msg_label = g_object_new (GTK_TYPE_LABEL,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   894
+                                NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   895
+  pwd->pam_message_label = pam_msg_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   896
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   897
+  gtk_box_pack_start (GTK_BOX (vbox2), pam_msg_label, FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   898
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   899
+  /* date string */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   900
+  tm = localtime (&now);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   901
+  memset (buf, 0, sizeof (buf));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   902
+  format_string_utf8 = _("%d-%b-%y (%a); %I:%M %p");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   903
+  format_string_locale = g_locale_from_utf8 (format_string_utf8, -1,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   904
+                                             NULL, NULL, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   905
+  strftime (buf, sizeof (buf) - 1, format_string_locale, tm);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   906
+  g_free (format_string_locale);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   907
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   908
+  utf8_format = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   909
+  s = g_markup_printf_escaped ("<small>%s</small>", utf8_format);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   910
+  g_free (utf8_format);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   911
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   912
+  date_label = g_object_new (GTK_TYPE_LABEL,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   913
+                             "use-markup", TRUE,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   914
+                             "label", s,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   915
+                             NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   916
+  g_free (s);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   917
+  gtk_box_pack_start (GTK_BOX (vbox2), date_label,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   918
+                      FALSE, FALSE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   919
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   920
+  /* button box */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   921
+  bbox = g_object_new (GTK_TYPE_HBUTTON_BOX,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   922
+                       "layout-style", GTK_BUTTONBOX_END,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   923
+                       "spacing", 10,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   924
+                       NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   925
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   926
+  /* Ok button */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   927
+  button = gtk_button_new_from_stock (GTK_STOCK_OK);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   928
+  pwd->button = button;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   929
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   930
+  gtk_box_pack_end (GTK_BOX (bbox), button,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   931
+                    FALSE, TRUE, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   932
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   933
+  free (user);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   934
+  free (version);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   935
+  free (host);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   936
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   937
+  /* POP */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   938
+  gtk_widget_pop_colormap ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   939
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   940
+  return pwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   941
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   942
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   943
+/* Callback for when user has finished entering input, even though
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   944
+   we don't display an "OK" button for them to click on */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   945
+static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   946
+ok_clicked_cb (GtkWidget *button, PasswdDialog *pwd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   947
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   948
+  const char *s;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   949
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   950
+  g_object_set (pwd->msg_label, "label", _("<b>Checking...</b>"), NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   951
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   952
+  s = gtk_entry_get_text (GTK_ENTRY (pwd->user_input_entry));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   953
+  write_to_parent ("input", s, TRUE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   954
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   955
+  /* Reset password field to blank, else passwd field shows old passwd *'s,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   956
+     visible when passwd is expired, and pam is walking the user to change
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   957
+     old passwd.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   958
+   */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   959
+  gtk_editable_delete_text (GTK_EDITABLE (pwd->user_input_entry), 0, -1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   960
+  gtk_widget_hide (pwd->user_input_entry);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   961
+  gtk_widget_hide (pwd->user_prompt_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   962
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   963
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   964
+static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   965
+connect_signals (PasswdDialog *pwd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   966
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   967
+  g_signal_connect (pwd->button, "clicked",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   968
+                    G_CALLBACK (ok_clicked_cb),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   969
+                    pwd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   970
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   971
+  g_signal_connect (pwd->user_input_entry, "activate",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   972
+                    G_CALLBACK (ok_clicked_cb),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   973
+                    pwd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   974
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   975
+  g_signal_connect (pwd->dialog, "delete-event",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   976
+                    G_CALLBACK (gtk_main_quit),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   977
+                    NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   978
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   979
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   980
+static GdkFilterReturn
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   981
+dialog_filter_func (GdkXEvent *xevent, GdkEvent *gevent, gpointer data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   982
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   983
+  PasswdDialog *pwd = data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   984
+  XEvent *event = xevent;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   985
+  gdouble ratio;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   986
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   987
+  if ((event->xany.type != ClientMessage ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   988
+       event->xclient.message_type != XA_UNLOCK_RATIO))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   989
+    return GDK_FILTER_CONTINUE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   990
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   991
+  ratio = event->xclient.data.l[0] / (gdouble)100.0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   992
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   993
+  /* CR 6176524 passwdTimeoutEnable for disabled user */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   994
+  if (event->xclient.data.l[1] == 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   995
+    g_object_set (pwd->progress, "fraction", ratio, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   996
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   997
+  return GDK_FILTER_REMOVE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   998
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   999
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1000
+static gboolean
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1001
+handle_input (GIOChannel *source, GIOCondition cond, gpointer data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1002
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1003
+  PasswdDialog *pwd = data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1004
+  GIOStatus status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1005
+  char *str;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1006
+  char *label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1007
+  char *hmsg = NULL;  /* This is the heading of lock dialog..shows status */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1008
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1009
+  if (cond & G_IO_HUP) /* daemon crashed/exited/was killed */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1010
+    gtk_main_quit ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1011
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1012
+  do
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1013
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1014
+      status = g_io_channel_read_line (source, &str, NULL, NULL, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1015
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1016
+  while (status == G_IO_STATUS_AGAIN);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1017
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1018
+/* debug only
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1019
+  if (status == G_IO_STATUS_ERROR)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1020
+      g_message ("handle input() status_error %s\n",str);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1021
+  if (status == G_IO_STATUS_EOF)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1022
+      g_message ("handle input() status_eof %s\n",str);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1023
+  if (status == G_IO_STATUS_NORMAL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1024
+      g_message ("handle input() status_normal %s\n",str);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1025
+  Most likely, the returned error msg of g_io_channel_read_line(),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1026
+  i.e str will not be translated into other locales ...
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1027
+*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1028
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1029
+  if (str)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1030
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1031
+      /* strip trailing newline */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1032
+      char *nl = strrchr(str, '\n');
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1033
+      if (nl)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1034
+        *nl = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1035
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1036
+      /*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1037
+      fprintf (stderr,">>>>>Child..in handle_input..string is:%s\n",str);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1038
+      fflush (stderr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1039
+      */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1040
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1041
+      /* Handle commands from parent daemon */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1042
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1043
+      if (((strncmp (str, "ul_", 3)) == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1044
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1045
+          /* search for =, and if found, split into two strings there */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1046
+          char *msgstr = strchr(str, '='); /* Data sent with command */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1047
+          if (msgstr)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1048
+            *msgstr++ = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1049
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1050
+          if ((strcmp (str, "ul_ok") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1051
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1052
+              hmsg = _("Authentication Successful!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1053
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1054
+          else if ((strcmp (str, "ul_acct_ok") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1055
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1056
+              hmsg = _("PAM Account Management Also Successful!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1057
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1058
+          else if ((strcmp (str, "ul_setcred_fail") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1059
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1060
+              hmsg = _("Just a Warning PAM Set Credential Failed!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1061
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1062
+          else if ((strcmp (str, "ul_setcred_ok") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1063
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1064
+              hmsg = _("PAM Set Credential Also Successful!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1065
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1066
+          else if ((strcmp (str, "ul_acct_fail") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1067
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1068
+              hmsg = _("Your Password has expired.");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1069
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1070
+          else if ((strcmp (str, "ul_fail") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1071
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1072
+              hmsg = _("Sorry!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1073
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1074
+          else if ((strcmp (str, "ul_read") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1075
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1076
+              hmsg = _("Waiting for user input!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1077
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1078
+          else if ((strcmp (str, "ul_time") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1079
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1080
+              hmsg = _("Timed Out!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1081
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1082
+          else if ((strcmp (str, "ul_null") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1083
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1084
+              hmsg = _("Still Checking!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1085
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1086
+          else if ((strcmp (str, "ul_cancel") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1087
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1088
+              hmsg = _("Authentication Cancelled!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1089
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1090
+          else if ((strcmp (str, "ul_pamprompt") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1091
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1092
+              gtk_label_set_text (GTK_LABEL (pwd->user_prompt_label), msgstr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1093
+              gtk_widget_show (pwd->user_prompt_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1094
+              msgstr = NULL; /* clear message so we don't show it twice */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1095
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1096
+          else if ((strcmp (str, "ul_prompt_echo") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1097
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1098
+              if ((strcmp (msgstr, "true") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1099
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1100
+                  gtk_entry_set_visibility
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1101
+                    (GTK_ENTRY (pwd->user_input_entry), TRUE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1102
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1103
+              else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1104
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1105
+                  if ((strcmp (msgstr, "stars") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1106
+                    /* reset to default display of "*" or bullet */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1107
+                    gtk_entry_unset_invisible_char
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1108
+                      (GTK_ENTRY (pwd->user_input_entry));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1109
+                  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1110
+                    /* set to no display */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1111
+                    gtk_entry_set_invisible_char
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1112
+                       (GTK_ENTRY (pwd->user_input_entry), 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1113
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1114
+                  gtk_entry_set_visibility
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1115
+                    (GTK_ENTRY (pwd->user_input_entry), FALSE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1116
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1117
+              msgstr = NULL; /* clear message so we don't show it to user */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1118
+              /* Show the entry field */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1119
+              gtk_widget_show (pwd->user_input_entry);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1120
+              gtk_widget_grab_focus (pwd->user_input_entry);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1121
+              gdk_display_sync
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1122
+		  (gtk_widget_get_display (pwd->user_input_entry));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1123
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1124
+          else if ((strcmp (str, "ul_message") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1125
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1126
+              hmsg = NULL; /* only show msg */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1127
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1128
+          else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1129
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1130
+              /* Should not be others, but if so just show it */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1131
+              hmsg = str;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1132
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1133
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1134
+          if (hmsg)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1135
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1136
+              label = g_markup_printf_escaped ("<b>%s</b>", hmsg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1137
+              g_object_set (pwd->msg_label, "label", label, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1138
+              g_free (label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1139
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1140
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1141
+          if (msgstr)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1142
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1143
+              gtk_label_set_text (GTK_LABEL (pwd->pam_message_label), msgstr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1144
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1145
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1146
+      else if ((strcmp (str, "cmd_exit") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1147
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1148
+          gtk_main_quit ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1149
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1150
+      else /* something came through that didn't start with ul_ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1151
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1152
+          gtk_label_set_text (GTK_LABEL (pwd->pam_message_label), str);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1153
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1154
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1155
+      g_free (str);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1156
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1157
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1158
+  return (status != G_IO_STATUS_EOF);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1159
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1160
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1161
+int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1162
+main (int argc, char *argv[])
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1163
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1164
+  GIOChannel *ioc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1165
+  PasswdDialog *pwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1166
+  char *s;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1167
+  char *real_progname = argv[0];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1168
+  GConfClient *client;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1169
+  const char *modulesptr = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1170
+  int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1171
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1172
+  gboolean  at_enable  = FALSE; /* accessibility mode enabled ? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1173
+  Bonobo_ServerInfoList *server_list = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1174
+  CORBA_Environment ev;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1175
+  Accessibility_LoginHelper helper;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1176
+  Accessibility_LoginHelper *helper_list = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1177
+  CORBA_boolean safe;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1178
+  gboolean center_position = TRUE; /* center dialog on screen? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1179
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1180
+#ifdef ENABLE_NLS
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1181
+  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1182
+  textdomain (GETTEXT_PACKAGE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1183
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1184
+#ifdef HAVE_GTK2
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1185
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1186
+#else /* ! HAVE_GTK2 */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1187
+  if (!setlocale (LC_ALL, ""))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1188
+    fprintf (stderr, "%s: locale not supported by C library\n", real_progname);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1189
+#endif /* ! HAVE_GTK2 */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1190
+#endif /* ENABLE_NLS */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1191
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1192
+  s = strrchr (real_progname, '/');
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1193
+  if (s) real_progname = s+1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1194
+  progname = real_progname;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1195
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1196
+  parent_file = fdopen(FD_TO_PARENT, "w");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1197
+  if (!parent_file)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1198
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1199
+      fprintf (stderr, "%s: can't communicate with parent, exiting.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1200
+               progname);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1201
+      exit (1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1202
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1203
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1204
+  gtk_init (&argc, &argv);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1205
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1206
+  /* Intern the atoms that xscreensaver_command() needs.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1207
+   */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1208
+  {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1209
+    Display *dpy = gdk_x11_get_default_xdisplay();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1210
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1211
+    const struct atom_request unlock_atoms[] =
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1212
+      {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1213
+	{ &XA_UNLOCK_RATIO, "UNLOCK_RATIO" },
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1214
+	{ NULL, NULL } /* Must be last to terminate list */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1215
+      };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1216
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1217
+    const struct atom_request *atom_lists[3] = { NULL, NULL, NULL };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1218
+    atom_lists[0] = remote_control_atoms;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1219
+    atom_lists[1] = unlock_atoms;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1220
+    request_atoms (dpy, atom_lists);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1221
+  }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1222
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1223
+  /* bugid 6346056(P1):
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1224
+     ATOK pallet sometimes appears in screensave/lock-screen mode
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1225
+  */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1226
+  putenv ("GTK_IM_MODULE=gtk-im-context-simple");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1227
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1228
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1229
+  /* accessibility mode enabled ? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1230
+  client = gconf_client_get_default ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1231
+  at_enable = gconf_client_get_bool (client,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1232
+                                     "/desktop/gnome/interface/accessibility",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1233
+                                     NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1234
+  if (at_enable)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1235
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1236
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1237
+      /* GTK Accessibility Module initialized */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1238
+      modulesptr = g_getenv ("GTK_MODULES");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1239
+      if (!modulesptr || modulesptr [0] == '\0')
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1240
+        putenv ("GTK_MODULES=gail:atk-bridge");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1241
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1242
+      CORBA_exception_init (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1243
+      if (!bonobo_init (&argc, argv))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1244
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1245
+          g_error ("Can't initialize Bonobo");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1246
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1247
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1248
+      /* bonobo-activation query lists existing instances */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1249
+      server_list = bonobo_activation_query (
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1250
+        "(repo_ids.has('IDL:Accessibility/LoginHelper:1.0')) AND _active",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1251
+        NULL, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1252
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1253
+      if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1254
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1255
+          bonobo_debug_shutdown ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1256
+          g_error ("LoginHelper query failed : %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1257
+                   bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1258
+          /* not reached (below) because g_error exits */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1259
+          CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1260
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1261
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1262
+      /*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1263
+       * 6182506: unlock dialog can be obscured by the magnifier window
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1264
+       * if it's always centered, so don't force that if any accessibility
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1265
+       * helpers are present
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1266
+       */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1267
+      if (server_list && server_list->_length)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1268
+        center_position = FALSE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1269
+    } /* accessibility enabled */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1270
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1271
+  pwd = make_dialog (center_position);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1272
+  connect_signals (pwd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1273
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1274
+  gtk_widget_show_all (pwd->dialog);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1275
+  gtk_window_present (GTK_WINDOW (pwd->dialog));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1276
+  gtk_widget_map (pwd->dialog);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1277
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1278
+  gdk_display_sync (gtk_widget_get_display (pwd->dialog));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1279
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1280
+  gdk_window_add_filter (GET_WINDOW (pwd->dialog), dialog_filter_func, pwd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1281
+  write_windowid ("dialog_win", GDK_WINDOW_XID (GET_WINDOW (pwd->dialog)));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1282
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1283
+  if (server_list && server_list->_length)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1284
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1285
+      /* debug only
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1286
+      g_message ("%d LoginHelpers are running.",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1287
+                 server_list ? server_list->_length : 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1288
+      */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1289
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1290
+      helper_list = g_new0 (Accessibility_LoginHelper, server_list->_length);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1291
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1292
+      /* for each instance... */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1293
+      for (i = 0; i < server_list->_length; i++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1294
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1295
+          Bonobo_Unknown server;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1296
+          Bonobo_ServerInfo info = server_list->_buffer[i];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1297
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1298
+          server = bonobo_activation_activate_from_id (
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1299
+              info.iid, Bonobo_ACTIVATION_FLAG_EXISTING_ONLY, NULL, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1300
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1301
+          if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1302
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1303
+              g_warning ("Error activating server %d: %s", i,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1304
+                         bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1305
+              CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1306
+              continue;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1307
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1308
+          else if (server == CORBA_OBJECT_NIL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1309
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1310
+              g_warning ("Activated server %d is NIL!", i);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1311
+              continue;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1312
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1313
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1314
+          bonobo_activate ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1315
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1316
+          helper = Bonobo_Unknown_queryInterface
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1317
+            (server, "IDL:Accessibility/LoginHelper:1.0", &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1318
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1319
+          if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1320
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1321
+              g_warning ("Error performing interface query: %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1322
+                         bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1323
+              CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1324
+              continue;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1325
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1326
+          else if (helper == CORBA_OBJECT_NIL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1327
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1328
+              g_warning ("Activated an object which advertised LoginHelper but does not implement it!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1329
+              continue;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1330
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1331
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1332
+          helper_list[i] = helper;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1333
+          bonobo_object_release_unref (server, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1334
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1335
+          if (helper && !BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1336
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1337
+              /* ask the helper to go into safe mode */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1338
+              safe = Accessibility_LoginHelper_setSafe (helper, TRUE, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1339
+              if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1340
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1341
+                  g_warning ("setSafe(TRUE) failed: %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1342
+                             bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1343
+                  CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1344
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1345
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1346
+              /* get the raise window list (if the program went into safe mode) */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1347
+              if (safe)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1348
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1349
+                  int j;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1350
+                  gboolean needs_windows_raised = FALSE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1351
+                  Accessibility_LoginHelper_DeviceReqList *list;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1352
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1353
+                  g_debug ("safe");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1354
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1355
+                  /* does this helper need to have windows raised? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1356
+                  list = Accessibility_LoginHelper_getDeviceReqs (helper, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1357
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1358
+                  if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1359
+                    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1360
+                      g_warning ("Bonobo exception getting Device Requirements: %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1361
+                                 bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1362
+                      CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1363
+                    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1364
+                  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1365
+                    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1366
+                      g_debug ("LoginHelper device requirements: ");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1367
+                      if (list->_length == 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1368
+                        g_debug (" - None.");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1369
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1370
+                      for (j = 0; j < list->_length; j++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1371
+                        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1372
+                          switch (list->_buffer[j])
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1373
+                            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1374
+                            case Accessibility_LoginHelper_GUI_EVENTS:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1375
+                              g_debug (" - Needs access to the GUI event subsystem (e.g. Xserver)");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1376
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1377
+                            case Accessibility_LoginHelper_CORE_KEYBOARD:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1378
+                              g_debug (" - Needs access to core keyboard device");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1379
+                              write_to_parent("ungrab_keyboard", "true", FALSE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1380
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1381
+                            case Accessibility_LoginHelper_CORE_POINTER:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1382
+                              g_debug (" - Needs access to core pointer device");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1383
+                              write_to_parent("ungrab_pointer", "true", FALSE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1384
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1385
+                            case Accessibility_LoginHelper_EXT_INPUT:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1386
+                              g_debug (" - Reads XInput extended input devices");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1387
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1388
+                            case Accessibility_LoginHelper_POST_WINDOWS:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1389
+                              g_debug (" - Posts windows");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1390
+                              needs_windows_raised = TRUE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1391
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1392
+                            case Accessibility_LoginHelper_AUDIO_OUT:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1393
+                              g_debug (" - Writes to audio device");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1394
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1395
+                            case Accessibility_LoginHelper_AUDIO_IN:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1396
+                              g_debug (" - Reads from audio device");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1397
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1398
+                            case Accessibility_LoginHelper_LOCALHOST:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1399
+                              g_debug (" - Needs LOCALHOST network connection");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1400
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1401
+                            case Accessibility_LoginHelper_SERIAL_OUT:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1402
+                              g_debug (" - Needs to write to one or more serial ports");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1403
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1404
+                            default:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1405
+                              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1406
+                            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1407
+                        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1408
+                      CORBA_free (list);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1409
+                    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1410
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1411
+                  if (needs_windows_raised)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1412
+                    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1413
+                      Accessibility_LoginHelper_WindowList *windows
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1414
+                        = Accessibility_LoginHelper_getRaiseWindows
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1415
+                        (helper, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1416
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1417
+                      if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1418
+                        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1419
+                          g_warning ("getRaiseWindows failed: %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1420
+                                     bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1421
+                          CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1422
+                        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1423
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1424
+                      g_debug ("%d windows need raising", windows->_length);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1425
+                      for (j = 0; j < windows->_length; j++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1426
+                        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1427
+                          Window wid = windows->_buffer[j].winID;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1428
+                          g_debug ("Window ID = 0x%lx", wid);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1429
+                          if (wid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1430
+                            write_windowid ("raise_win", wid);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1431
+                        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1432
+                    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1433
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1434
+              else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1435
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1436
+                  g_warning ("LoginHelper %d did not go into safe mode", i);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1437
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1438
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1439
+           else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1440
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1441
+              if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1442
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1443
+                  g_warning ("Error activating %s: %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1444
+                             info.iid, bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1445
+                  CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1446
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1447
+              else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1448
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1449
+                  g_warning ("no active instance of %s found", info.iid);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1450
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1451
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1452
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1453
+    } /* accessibility helpers active */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1454
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1455
+  /* Flush dialog window ids & any messages about login helpers to parent */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1456
+  write_to_parent(NULL, NULL, TRUE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1457
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1458
+  gtk_widget_grab_focus (pwd->user_input_entry);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1459
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1460
+  ioc = g_io_channel_unix_new (0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1461
+  g_io_add_watch (ioc, G_IO_IN | G_IO_HUP, handle_input, pwd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1462
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1463
+  gtk_main ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1464
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1465
+  /* Reset accessibility helpers back to non-safe mode now that we're done */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1466
+  if (server_list)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1467
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1468
+      for (i = 0; i < server_list->_length; i++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1469
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1470
+          helper = helper_list[i];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1471
+          /* really no need to check the return value this time */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1472
+          Accessibility_LoginHelper_setSafe (helper, FALSE, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1473
+          if (BONOBO_EX (&ev))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1474
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1475
+              g_warning ("setSafe(FALSE) failed: %s",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1476
+                         bonobo_exception_get_text (&ev));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1477
+              CORBA_exception_free (&ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1478
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1479
+          CORBA_Object_release (helper, &ev);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1480
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1481
+      CORBA_free (server_list);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1482
+      bonobo_debug_shutdown ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1483
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1484
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1485
+  return 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1486
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1487
+#endif /* HAVE_GTK2 */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1488
diff --git a/driver/lock.c b/driver/lock.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1489
--- a/driver/lock.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1490
+++ b/driver/lock.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1491
@@ -21,8 +21,13 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1492
 #include <X11/Intrinsic.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1493
 #include <X11/cursorfont.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1494
 #include <X11/Xos.h>		/* for time() */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1495
+#include <X11/Xatom.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1496
 #include <time.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1497
 #include <sys/time.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1498
+#include <errno.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1499
+#include <gconf/gconf-client.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1500
+#include "exec.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1501
+#include "dialog-data.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1502
 #include "xscreensaver.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1503
 #include "resources.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1504
 #include "mlstring.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1505
@@ -83,126 +88,631 @@ vms_passwd_valid_p(char *pw, Bool verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1506
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1507
 typedef struct info_dialog_data info_dialog_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1508
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1509
+/* struct passwd_dialog_data moved to dialog-data.h */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1510
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1511
-#define MAX_BYTES_PER_CHAR 8	/* UTF-8 uses no more than 3, I think */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1512
-#define MAX_PASSWD_CHARS   128	/* Longest possible passphrase */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1513
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1514
-struct passwd_dialog_data {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1515
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1516
-  saver_screen_info *prompt_screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1517
-  int previous_mouse_x, previous_mouse_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1518
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1519
-  /* "Characters" in the password may be a variable number of bytes long.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1520
-     typed_passwd contains the raw bytes.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1521
-     typed_passwd_char_size indicates the size in bytes of each character,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1522
-     so that we can make backspace work.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1523
-   */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1524
-  char typed_passwd [MAX_PASSWD_CHARS * MAX_BYTES_PER_CHAR];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1525
-  char typed_passwd_char_size [MAX_PASSWD_CHARS];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1526
-  
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1527
-  XtIntervalId timer;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1528
-  int i_beam;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1529
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1530
-  float ratio;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1531
-  Position x, y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1532
-  Dimension width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1533
-  Dimension height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1534
-  Dimension border_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1535
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1536
-  Bool echo_input;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1537
-  Bool show_stars_p; /* "I regret that I have but one asterisk for my country."
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1538
-                        -- Nathan Hale, 1776. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1539
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1540
-  char *heading_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1541
-  char *body_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1542
-  char *user_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1543
-  mlstring *info_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1544
-  /* The entry field shall only be displayed if prompt_label is not NULL */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1545
-  mlstring *prompt_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1546
-  char *date_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1547
-  char *passwd_string;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1548
-  Bool passwd_changed_p; /* Whether the user entry field needs redrawing */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1549
-  Bool caps_p;		 /* Whether we saw a keypress with caps-lock on */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1550
-  char *unlock_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1551
-  char *login_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1552
-  char *uname_label;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1553
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1554
-  Bool show_uname_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1555
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1556
-  XFontStruct *heading_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1557
-  XFontStruct *body_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1558
-  XFontStruct *label_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1559
-  XFontStruct *passwd_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1560
-  XFontStruct *date_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1561
-  XFontStruct *button_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1562
-  XFontStruct *uname_font;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1563
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1564
-  Pixel foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1565
-  Pixel background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1566
-  Pixel border;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1567
-  Pixel passwd_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1568
-  Pixel passwd_background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1569
-  Pixel thermo_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1570
-  Pixel thermo_background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1571
-  Pixel shadow_top;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1572
-  Pixel shadow_bottom;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1573
-  Pixel button_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1574
-  Pixel button_background;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1575
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1576
-  Dimension preferred_logo_width, logo_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1577
-  Dimension preferred_logo_height, logo_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1578
-  Dimension thermo_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1579
-  Dimension internal_border;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1580
-  Dimension shadow_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1581
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1582
-  Dimension passwd_field_x, passwd_field_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1583
-  Dimension passwd_field_width, passwd_field_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1584
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1585
-  Dimension unlock_button_x, unlock_button_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1586
-  Dimension unlock_button_width, unlock_button_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1587
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1588
-  Dimension login_button_x, login_button_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1589
-  Dimension login_button_width, login_button_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1590
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1591
-  Dimension thermo_field_x, thermo_field_y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1592
-  Dimension thermo_field_height;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1593
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1594
-  Pixmap logo_pixmap;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1595
-  Pixmap logo_clipmask;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1596
-  int logo_npixels;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1597
-  unsigned long *logo_pixels;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1598
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1599
-  Cursor passwd_cursor;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1600
-  Bool unlock_button_down_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1601
-  Bool login_button_down_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1602
-  Bool login_button_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1603
-  Bool login_button_enabled_p;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1604
-  Bool button_state_changed_p; /* Refers to both buttons */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1605
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1606
-  Pixmap save_under;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1607
-  Pixmap user_entry_pixmap;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1608
-};
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1609
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1610
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1611
 static void draw_passwd_window (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1612
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1613
 static void update_passwd_window (saver_info *si, const char *printed_passwd,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1614
 				  float ratio);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1615
 static void destroy_passwd_window (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1616
+static int ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1617
 static void undo_vp_motion (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1618
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1619
 static void finished_typing_passwd (saver_info *si, passwd_dialog_data *pw);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1620
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1621
 static void cleanup_passwd_window (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1622
 static void restore_background (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1623
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1624
 extern void xss_authenticate(saver_info *si, Bool verbose_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1625
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1626
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1627
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1628
+#define WIN_ALLOC_INCREMENT 8	/* allocate entries in the window lists in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1629
+                                   increments of 8 at a time for fewer
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1630
+                                   reallocs and less chance of malloc error
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1631
+                                   at the wrong time */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1632
+#define EXTRA_RAISE_WIN_SLOTS 4 /* Need to leave four extra slots free in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1633
+                                   raise_wins to allow calling XRestackWindows
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1634
+                                   when a window pops up without having to
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1635
+                                   realloc or copy to a new list.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1636
+                                   These slots would be used by:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1637
+                                   - passwd_dialog
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1638
+                                   - stderr_overlay_window
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1639
+                                   - xscreensaver virtual root
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1640
+                                   - an interloper popup we need to hide
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1641
+                                */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1642
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1643
+extern Atom XA_UNLOCK_RATIO;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1644
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1645
+Bool g_passwd_dialog_created = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1646
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1647
+GConfClient *client = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1648
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1649
+static const char *switch_windows_gconf_key
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1650
+  = "/apps/metacity/global_keybindings/switch_windows";
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1651
+static char  *global_switch_key = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1652
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1653
+static const char *main_menu_gconf_key
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1654
+  = "/apps/metacity/global_keybindings/panel_main_menu";
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1655
+static char  *global_menu_key = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1656
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1657
+extern Bool safe_XDestroyWindow (Display *dpy, Window window);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1658
+static Bool safe_XRestackWindows(Display *dpy, Window windows[], int nwindows);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1659
+static Bool safe_XSendEvent(Display *dpy, Window w, Bool propagate,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1660
+                            long event_mask, XEvent *event_send);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1661
+static void passwd_animate_timer (XtPointer closure, XtIntervalId *id);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1662
+extern void swallow_unlock_typeahead_events (saver_info *si, XEvent *e);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1663
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1664
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1665
+static saver_screen_info *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1666
+find_screen_for_window (saver_info *si, Window wid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1667
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1668
+  saver_screen_info *ssi;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1669
+  Screen *screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1670
+  Window root, root_ret, parent_ret, *children = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1671
+  unsigned int nchildren = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1672
+  int screen_no, status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1673
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1674
+  status = XQueryTree (si->dpy, wid, &root_ret, &parent_ret,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1675
+                       &children, &nchildren);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1676
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1677
+  if (status == 0) /* failed */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1678
+    return NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1679
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1680
+  XFree(children);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1681
+  children = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1682
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1683
+  for (screen_no = 0; screen_no < si->nscreens; screen_no++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1684
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1685
+      ssi = &si->screens[screen_no];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1686
+      screen = ssi->screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1687
+      root   = RootWindowOfScreen (screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1688
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1689
+      if (root == root_ret)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1690
+        return ssi;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1691
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1692
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1693
+  return NULL; /* Didn't match the root on any screen  we know of - PUNT! */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1694
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1695
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1696
+/*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1697
+ 5083155 Unable to unlock screen when running dual-head MAG
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1698
+ adding dual or multiple heads for magnifier support
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1699
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1700
+ screen 0: loginhelp can pass the raisedWid of GOK or MAG or both
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1701
+           found: return its parent Wid (child of root)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1702
+           not found:  0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1703
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1704
+ other screen:        MAG only if the target screen no > 0 is selected
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1705
+           found:  restack on that screen
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1706
+               return 0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1707
+           not-found : return 0
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1708
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1709
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1710
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1711
+static Window
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1712
+check_raisedWid (saver_info *si, Window wid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1713
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1714
+  saver_screen_info *ssi;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1715
+  Screen *screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1716
+  Window root, root_ret, parent_ret, *children = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1717
+  unsigned int nchildren = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1718
+  int screen_no, status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1719
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1720
+  status = XQueryTree (si->dpy, wid, &root_ret, &parent_ret,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1721
+                       &children, &nchildren);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1722
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1723
+  if (status == 0) /* failed */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1724
+    return 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1725
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1726
+  XFree(children);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1727
+  children = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1728
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1729
+  for (screen_no = 0; screen_no < si->nscreens; screen_no++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1730
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1731
+      ssi = &si->screens[screen_no];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1732
+      screen = ssi->screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1733
+      root   = RootWindowOfScreen (screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1734
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1735
+      if (root == root_ret)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1736
+        break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1737
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1738
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1739
+  if ( screen_no >= si->nscreens ) /* Didn't match the root on any screen */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1740
+    return 0;                      /*  we know of - PUNT!                 */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1741
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1742
+  /* Climb the tree until we find an ancestor that's a child of root */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1743
+  while ( root_ret != parent_ret )
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1744
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1745
+      wid = parent_ret;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1746
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1747
+      status = XQueryTree (si->dpy, wid, &root_ret, &parent_ret,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1748
+                           &children, &nchildren);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1749
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1750
+      if (status == 0) /* failed */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1751
+        return 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1752
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1753
+      XFree(children);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1754
+      children = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1755
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1756
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1757
+  if ( ssi != si->pw_data->prompt_screen )
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1758
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1759
+      /* found in other screen (not the one with the unlock dialog),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1760
+         implies MAG target screen, invoke XRestackWindow() there
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1761
+      */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1762
+      Window screen_win[2] = { wid, ssi->screensaver_window };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1763
+      safe_XRestackWindows(si->dpy, screen_win, 2);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1764
+      return 0;   /* no need to do the restack on prompt screen */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1765
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1766
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1767
+  return wid;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1768
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1769
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1770
+/* Enforce window stacking order when a new window arrives.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1771
+   Only allow raising windows the unlock dialog has told us to raise
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1772
+   (including itself).
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1773
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1774
+static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1775
+restack_my_windows (saver_info* si, saver_screen_info *ssi, Window newWin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1776
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1777
+  int n = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1778
+  Window short_stack[EXTRA_RAISE_WIN_SLOTS];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1779
+  Window *restack_list;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1780
+  Bool allowed = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1781
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1782
+  /* If window is on another screen than the unlock dialog,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1783
+     or we have list of no windows to raise */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1784
+  if ((si->raise_wins == NULL) || (ssi != si->pw_data->prompt_screen))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1785
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1786
+      restack_list = short_stack;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1787
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1788
+  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1789
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1790
+      restack_list = si->raise_wins;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1791
+      for (n = 0; n < si->num_raise_wins; n++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1792
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1793
+          if (si->raise_wins[n] == newWin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1794
+            allowed = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1795
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1796
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1797
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1798
+  if (si->passwd_dialog && (ssi == si->pw_data->prompt_screen))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1799
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1800
+      restack_list[n++] = si->passwd_dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1801
+      if (si->passwd_dialog == newWin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1802
+        allowed = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1803
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1804
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1805
+  if (ssi->stderr_overlay_window)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1806
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1807
+      restack_list[n++] = ssi->stderr_overlay_window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1808
+      if (ssi->stderr_overlay_window == newWin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1809
+        allowed = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1810
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1811
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1812
+  if (ssi->screensaver_window)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1813
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1814
+      restack_list[n++] = ssi->screensaver_window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1815
+      if (ssi->screensaver_window == newWin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1816
+        allowed = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1817
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1818
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1819
+  /* If it's not in the allowed list, it goes behind
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1820
+     the screensaver_window. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1821
+  if (newWin && !allowed)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1822
+    restack_list[n++] = newWin;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1823
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1824
+  if (n > 1)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1825
+    safe_XRestackWindows (si->dpy, restack_list, n);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1826
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1827
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1828
+/* Send a command to the xscreensaver-lock child process
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1829
+   Arguments:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1830
+    - msg - message to send, such as ul_ok
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1831
+    - data - additional data, such as string to display for this message,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1832
+             if any, otherwise NULL
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1833
+   Message format sent to child:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1834
+    "msg\n" if no data, otherwise "msg=data\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1835
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1836
+int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1837
+write_to_child (saver_info* si, const char* msg, const char *data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1838
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1839
+  if (msg == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1840
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1841
+      fprintf (stderr, "Invalid null message written to child\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1842
+      return -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1843
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1844
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1845
+  if (si->external_passwd && g_passwd_dialog_created &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1846
+      si->pw_data->stdin_fd != -1)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1847
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1848
+      int len;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1849
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1850
+      if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1851
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1852
+          fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1853
+                   "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1854
+                   "HAVE_SCRSVR_LOCK writing to fd:%d message is:\n%s=%s\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1855
+                   "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1856
+                   si->pw_data->stdin_fd, msg, data ? data : "(null)");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1857
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1858
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1859
+      if (data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1860
+        len = fprintf (si->pw_data->stdin_file, "%s=%s\n", msg, data);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1861
+      else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1862
+        len = fprintf (si->pw_data->stdin_file, "%s\n", msg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1863
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1864
+      fflush (si->pw_data->stdin_file);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1865
+      return len;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1866
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1867
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1868
+  return (0); /* if we didn't write anything return 0 */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1869
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1870
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1871
+static int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1872
+sane_dup2 (int fd1, int fd2)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1873
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1874
+  int ret;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1875
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1876
+  do
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1877
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1878
+      ret = dup2 (fd1, fd2);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1879
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1880
+  while (ret < 0 && errno == EINTR);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1881
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1882
+  return ret;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1883
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1884
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1885
+static int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1886
+close_and_invalidate (int *fd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1887
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1888
+  int ret;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1889
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1890
+  ret = close (*fd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1891
+  *fd = -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1892
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1893
+  return ret;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1894
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1895
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1896
+void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1897
+handle_passwd_input (XtPointer xtdata, int *fd, XtInputId *id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1898
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1899
+  saver_info *si = (saver_info *)xtdata;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1900
+  saver_preferences *p = &si->prefs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1901
+  char buffer[1024];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1902
+  char *msg, *data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1903
+  passwd_dialog_data *pw = si->pw_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1904
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1905
+  if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1906
+    fprintf (stderr, "passwd input handler() fd=%d\n", *fd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1907
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1908
+  msg = fgets (buffer, sizeof (buffer), pw->stdout_file);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1909
+  if (!msg)  /* child closed pipe */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1910
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1911
+      if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1912
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1913
+          fprintf (stderr, "done reading...\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1914
+          fprintf (stderr, "removing input handler...\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1915
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1916
+      XtRemoveInput (*id);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1917
+      pw->stdout_input_id = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1918
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1919
+      if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1920
+        fprintf (stderr, "passwd input handler() returning...done reading\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1921
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1922
+      return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1923
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1924
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1925
+  if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1926
+    fprintf (stderr, "Child sent message: %s\n", msg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1927
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1928
+  /* search for =, and if found, split msg & data into two strings there */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1929
+  data = strchr(msg, '=');
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1930
+  if (data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1931
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1932
+      char *nl;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1933
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1934
+      *data++ = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1935
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1936
+      /* strip trailing newline */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1937
+      nl = strchr (data, '\n');
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1938
+      if (nl)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1939
+        *nl = '\0';
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1940
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1941
+  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1942
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1943
+      /* All the messages we currently expect require data! */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1944
+      if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1945
+        fprintf (stderr, "*** Invalid message: no data found, discarding\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1946
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1947
+      return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1948
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1949
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1950
+  if ((strcmp(msg, "input") == 0)) /* User input */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1951
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1952
+      si->unlock_state = ul_finished;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1953
+      pw->got_passwd = TRUE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1954
+      pw->passwd_string = strdup (data);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1955
+      memset (data, 0, strlen(data));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1956
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1957
+  else if ((strcmp(msg, "ungrab_keyboard") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1958
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1959
+      /* An accessibility helper needs to access the keyboard, so we have
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1960
+         to release our grab - unfortunately this risks other apps acting
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1961
+         on keys they shouldn't, so first we disable metacity keys that
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1962
+         could allow getting back to the locked session windows, and hope
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1963
+         we don't crash or die before restoring them later.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1964
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1965
+         Other window managers are likely to be risky to use in this case.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1966
+      */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1967
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1968
+      if (client == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1969
+        client = gconf_client_get_default();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1970
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1971
+      if (global_switch_key == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1972
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1973
+          global_switch_key =
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1974
+            gconf_client_get_string (client, switch_windows_gconf_key, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1975
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1976
+          if (global_switch_key && strncmp (global_switch_key, "dis", 3))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1977
+            gconf_client_set_string (client, switch_windows_gconf_key,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1978
+                                     "disabled", NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1979
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1980
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1981
+      if (global_menu_key == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1982
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1983
+          global_menu_key =
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1984
+            gconf_client_get_string (client, main_menu_gconf_key, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1985
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1986
+          if (global_menu_key && strncmp(global_menu_key, "dis", 3))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1987
+            gconf_client_set_string (client, main_menu_gconf_key,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1988
+                                     "disabled", NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1989
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1990
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1991
+      XUngrabKeyboard (si->dpy, CurrentTime);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1992
+      XFlush (si->dpy);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1993
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1994
+  else if ((strcmp(msg, "ungrab_pointer") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1995
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1996
+      /* An accessibility helper needs to access the mouse, so we have
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1997
+         to release our grab - this is simpler, since we don't worry about
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1998
+         mouse gestures that may get through, though maybe we should...
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1999
+      */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2000
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2001
+      XUngrabPointer (si->dpy, CurrentTime);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2002
+      XFlush (si->dpy);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2003
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2004
+  else /* Get a window id of an interesting window from the child */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2005
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2006
+      Window window = strtoul (data, NULL, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2007
+      int status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2008
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2009
+      if ((strcmp (msg, "dialog_win") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2010
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2011
+          /* The unlock dialog itself */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2012
+          si->passwd_dialog = window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2013
+          pw->got_windowid = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2014
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2015
+          move_mouse_grab (si, si->passwd_dialog, pw->passwd_cursor,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2016
+                           pw->prompt_screen->number);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2017
+          undo_vp_motion (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2018
+          passwd_animate_timer ((XtPointer) si, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2019
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2020
+          /* Flush queue of captured typeahead events */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2021
+          if (si->typeahead_events && si->num_typeahead_events)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2022
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2023
+              int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2024
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2025
+              for (i = 0; i < si->num_typeahead_events; i++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2026
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2027
+                  si->typeahead_events[i].window = window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2028
+                  safe_XSendEvent (si->dpy, window, False, KeyPressMask,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2029
+                                   (XEvent *) &si->typeahead_events[i]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2030
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2031
+              si->num_typeahead_events = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2032
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2033
+          XGrabKeyboard (si->dpy, window, True, GrabModeAsync, GrabModeAsync, CurrentTime);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2034
+          XGrabPointer (si->dpy, window, True, 0, GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2035
+          XFlush (si->dpy);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2036
+          XSetInputFocus (si->dpy, window, RevertToPointerRoot, CurrentTime);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2037
+          XSync (si->dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2038
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2039
+      else if ((strcmp (msg, "raise_win") == 0))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2040
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2041
+          /* Accessibility helpers that need to be raised above the
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2042
+             full-screen blanking window hiding the user's desktop */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2043
+          Window *newlist;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2044
+          Window overwin;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2045
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2046
+          if ( (si->num_raise_wins + EXTRA_RAISE_WIN_SLOTS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2047
+               >= si->max_raise_wins)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2048
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2049
+              int raise_alloc = si->max_raise_wins + WIN_ALLOC_INCREMENT;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2050
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2051
+              newlist = realloc(si->raise_wins, raise_alloc * sizeof(Window));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2052
+              if (newlist == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2053
+                return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2054
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2055
+              si->raise_wins = newlist;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2056
+              si->max_raise_wins = raise_alloc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2057
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2058
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2059
+          overwin = check_raisedWid (si, window);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2060
+          if (overwin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2061
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2062
+              XWindowAttributes attrs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2063
+              status = XGetWindowAttributes (si->dpy, overwin, &attrs);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2064
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2065
+              if ( status && !attrs.override_redirect )
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2066
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2067
+                  unsigned long valuemask = CWOverrideRedirect;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2068
+                  XSetWindowAttributes setwinattr;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2069
+                  setwinattr.override_redirect = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2070
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2071
+                  XChangeWindowAttributes (si->dpy, overwin,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2072
+                                           valuemask, &setwinattr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2073
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2074
+                  if (si->num_override_wins >= si->max_override_wins)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2075
+                    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2076
+                      int over_alloc
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2077
+                        = si->max_override_wins + WIN_ALLOC_INCREMENT;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2078
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2079
+                      newlist = realloc(si->override_wins,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2080
+                                        over_alloc * sizeof(Window));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2081
+                      if (newlist == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2082
+                        return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2083
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2084
+                      si->override_wins = newlist;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2085
+                      si->max_override_wins = over_alloc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2086
+                    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2087
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2088
+                  si->override_wins[si->num_override_wins++] = overwin;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2089
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2090
+              XMapSubwindows(si->dpy, overwin);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2091
+              si->raise_wins[si->num_raise_wins++] = overwin;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2092
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2093
+          else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2094
+            si->raise_wins[si->num_raise_wins++] = window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2095
+        } /* "raise_win" */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2096
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2097
+      restack_my_windows(si, si->pw_data->prompt_screen, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2098
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2099
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2100
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2101
+/* returns successful fork/exec */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2102
+Bool
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2103
+spawn_external_passwd_process (saver_info *si, passwd_dialog_data *pw)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2104
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2105
+  saver_preferences *p = &si->prefs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2106
+  pid_t forked;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2107
+  const char *command = LOCKDIR "/xscreensaver-lock";
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2108
+  int stdin_pipe[2]  = { -1, -1 };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2109
+  int stdout_pipe[2] = { -1, -1 };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2110
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2111
+  si->passwd_pid = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2112
+  pw->stdin_fd = pw->stdout_fd = -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2113
+  pw->got_windowid = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2114
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2115
+  if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2116
+     fprintf(stderr, "-->spawn_external_passwd()\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2117
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2118
+  if (si->passwd_pid > 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2119
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2120
+      if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2121
+        fprintf (stderr,"pid %ld still exists.  Killing it with SIGKILL\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2122
+                 si->passwd_pid);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2123
+      kill_job (si, si->passwd_pid, SIGKILL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2124
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2125
+  si->passwd_pid = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2126
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2127
+  if (pipe (stdin_pipe) < 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2128
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2129
+      perror ("pipe(stdin_pipe) failed!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2130
+      return False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2131
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2132
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2133
+  if (pipe (stdout_pipe) < 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2134
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2135
+      perror ("pipe(stdout_pipe) failed!");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2136
+      close_and_invalidate (&stdin_pipe[0]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2137
+      close_and_invalidate (&stdin_pipe[1]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2138
+      return False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2139
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2140
+  switch ((int) (forked = fork ()))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2141
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2142
+    case -1:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2143
+      fprintf (stderr, "%s: ", blurb ());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2144
+      perror ("couldn't fork");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2145
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2146
+      close_and_invalidate (&stdin_pipe[0]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2147
+      close_and_invalidate (&stdin_pipe[1]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2148
+      close_and_invalidate (&stdout_pipe[0]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2149
+      close_and_invalidate (&stdout_pipe[1]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2150
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2151
+      return False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2152
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2153
+    case 0:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2154
+      close (ConnectionNumber (si->dpy)); /* close display fd */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2155
+      /* limit_subproc_memory (p->inferior_memory_limit, p->verbose_p); */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2156
+      /* hack_subproc_environment (ssi); */ /* FIX $DISPLAY */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2157
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2158
+      /* Inside Child Process */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2159
+      if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2160
+        fprintf (stderr, "%s: spawning \"%s\" in pid %lu.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2161
+                 blurb(), command, (unsigned long) getpid ());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2162
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2163
+      close_and_invalidate (&stdin_pipe[1]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2164
+      close_and_invalidate (&stdout_pipe[0]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2165
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2166
+      sane_dup2 (stdin_pipe[0], 0);  /* Listen to Parent from here */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2167
+      sane_dup2 (stdout_pipe[1], 9); /* Talk to Parent from here */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2168
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2169
+      /* Make sure we have relinquished setuid privs or lock dialog gtk
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2170
+       * program will not run as libgtk is not setuid safe.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2171
+       */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2172
+      hack_uid (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2173
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2174
+      exec_command (p->shell, command, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2175
+      /* print_path_error (command); */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2176
+      fprintf (stderr, "%s: couldn't exec: %s\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2177
+               blurb (), command);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2178
+      abort ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2179
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2180
+    default:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2181
+      /* In Parent */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2182
+      make_job(forked, 0, command);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2183
+      close_and_invalidate (&stdin_pipe[0]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2184
+      close_and_invalidate (&stdout_pipe[1]);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2185
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2186
+      sane_dup2 (stdin_pipe[0], 0);  /* Listen to Child from here */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2187
+      sane_dup2 (stdout_pipe[1], 13); /* Talk to Child from here */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2188
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2189
+      pw->stdin_fd   = stdin_pipe[1];   /* Talk to child from here */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2190
+      pw->stdout_fd  = stdout_pipe[0];  /* Listen to Child from here */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2191
+      si->passwd_pid = forked;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2192
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2193
+      /* Messages to child dialog are sent through this pipe/fd */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2194
+      pw->stdin_file = fdopen (pw->stdin_fd, "w");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2195
+      write_to_child (si, "Hello", NULL); /* Send a test message to Child */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2196
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2197
+      /* Password from child dialog comes through this pipe/fd */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2198
+      pw->stdout_file = fdopen (pw->stdout_fd, "r");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2199
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2200
+      pw->stdout_input_id = XtAppAddInput (si->app, pw->stdout_fd,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2201
+                                           (XtPointer) XtInputReadMask,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2202
+                                           handle_passwd_input, si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2203
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2204
+      /* Set global flag to indicate that lock dialog is visible */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2205
+      g_passwd_dialog_created = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2206
+      return True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2207
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2208
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2209
+  /* shouldn't reach */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2210
+  abort ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2211
+  return False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2212
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2213
+#endif /* HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2214
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2215
 static int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2216
 new_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2217
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2218
   passwd_dialog_data *pw;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2219
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2220
   Screen *screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2221
   Colormap cmap;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2222
   char *f;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2223
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2224
   saver_screen_info *ssi = &si->screens [mouse_screen (si)];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2225
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2226
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2227
+  /* si->pw_data is globally allocated and never freed when HAVE_XSS_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2228
+  pw = si->pw_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2229
+  if (!spawn_external_passwd_process (si, pw))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2230
+    return -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2231
+  si->external_passwd = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2232
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2233
   pw = (passwd_dialog_data *) calloc (1, sizeof(*pw));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2234
   if (!pw)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2235
     return -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2236
@@ -211,17 +721,21 @@ new_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2237
    */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2238
   pw->login_button_p = (si->prefs.new_login_command &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2239
                         *si->prefs.new_login_command);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2240
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2241
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2242
   pw->passwd_cursor = XCreateFontCursor (si->dpy, XC_top_left_arrow);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2243
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2244
   pw->prompt_screen = ssi;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2245
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2246
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2247
   screen = pw->prompt_screen->screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2248
   cmap = DefaultColormapOfScreen (screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2249
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2250
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2251
   pw->show_stars_p = get_boolean_resource(si->dpy, "passwd.asterisks", 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2252
 					  "Boolean");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2253
   
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2254
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2255
   pw->heading_label = get_string_resource (si->dpy, "passwd.heading.label",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2256
 					   "Dialog.Label.Label");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2257
   pw->body_label = get_string_resource (si->dpy, "passwd.body.label",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2258
@@ -376,6 +890,7 @@ new_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2259
   if (pw->shadow_width == 0) pw->shadow_width = 4;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2260
   if (pw->thermo_width == 0) pw->thermo_width = pw->shadow_width;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2261
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2262
+#endif /* ! HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2263
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2264
   /* We need to remember the mouse position and restore it afterward, or
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2265
      sometimes (perhaps only with Xinerama?) the mouse gets warped to
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2266
@@ -442,12 +957,16 @@ make_passwd_window (saver_info *si,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2267
 		    const char *prompt,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2268
 		    Bool echo)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2269
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2270
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2271
   XSetWindowAttributes attrs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2272
   unsigned long attrmask = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2273
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2274
   passwd_dialog_data *pw;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2275
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2276
   Screen *screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2277
   Colormap cmap;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2278
   Dimension max_string_width_px;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2279
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2280
   saver_screen_info *ssi = &si->screens [mouse_screen (si)];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2281
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2282
   cleanup_passwd_window (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2283
@@ -455,7 +974,12 @@ make_passwd_window (saver_info *si,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2284
   if (! ssi)   /* WTF?  Trying to prompt while no screens connected? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2285
     return -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2286
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2287
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2288
+  /* si->pw_data is globally allocated and never freed when HAVE_XSS_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2289
+  if (!si->pw_data->got_windowid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2290
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2291
   if (!si->pw_data)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2292
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2293
     if (new_passwd_window (si) < 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2294
       return -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2295
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2296
@@ -470,6 +994,29 @@ make_passwd_window (saver_info *si,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2297
              blurb(), pw->prompt_screen->number,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2298
              info_msg ? info_msg : "");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2299
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2300
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2301
+  /* Wipe the old password, so we get prompted to enter new password. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2302
+  if (pw->passwd_string)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2303
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2304
+      memset(pw->passwd_string, 0, strlen (pw->passwd_string));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2305
+      free (pw->passwd_string);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2306
+      pw->passwd_string = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2307
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2308
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2309
+  if (info_msg)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2310
+    write_to_child (si, "ul_message", info_msg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2311
+  if (prompt)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2312
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2313
+      write_to_child (si, "ul_pamprompt", prompt);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2314
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2315
+      if (echo)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2316
+        write_to_child (si, "ul_prompt_echo", "true");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2317
+      else if (pw->show_stars_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2318
+        write_to_child (si, "ul_prompt_echo", "stars");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2319
+      else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2320
+        write_to_child (si, "ul_prompt_echo", "false");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2321
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2322
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2323
   screen = pw->prompt_screen->screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2324
   cmap = DefaultColormapOfScreen (screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2325
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2326
@@ -716,11 +1263,13 @@ make_passwd_window (saver_info *si,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2327
   if (cmap)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2328
     XInstallColormap (si->dpy, cmap);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2329
   draw_passwd_window (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2330
+#endif /* ! HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2331
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2332
   return 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2333
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2334
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2335
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2336
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2337
 static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2338
 draw_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2339
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2340
@@ -1066,17 +1615,48 @@ draw_button(Display *dpy,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2341
   draw_shaded_rectangle(dpy, dialog, x, y, width, height,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2342
 			shadow_width, shadow_light, shadow_dark);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2343
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2344
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2345
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2346
 static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2347
 update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2348
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2349
   passwd_dialog_data *pw = si->pw_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2350
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2351
   XGCValues gcv;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2352
   GC gc1, gc2;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2353
   int x, y;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2354
   XRectangle rects[1];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2355
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2356
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2357
   pw->ratio = ratio;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2358
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2359
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2360
+  /* Send countdown timer ratio to child lock dialog */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2361
+  if (si->passwd_dialog)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2362
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2363
+      XEvent event;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2364
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2365
+      event.xany.type = ClientMessage;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2366
+      event.xclient.display = si->dpy;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2367
+      event.xclient.window = si->passwd_dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2368
+      event.xclient.message_type = XA_UNLOCK_RATIO;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2369
+      event.xclient.format = 32;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2370
+      memset (&event.xclient.data, 0, sizeof (event.xclient.data));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2371
+      event.xclient.data.l[0] = (long)(pw->ratio * 100);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2372
+      event.xclient.data.l[1] = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2373
+      event.xclient.data.l[2] = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2374
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2375
+      if (!safe_XSendEvent (si->dpy, si->passwd_dialog, False, 0L, &event))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2376
+        fprintf (stderr, "%s: error sending ratio to lock dialog\n", blurb ());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2377
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2378
+  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2379
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2380
+      if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2381
+        fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2382
+          "-->update_passwd_window() lockdialog not created, returning!!\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2383
+      return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2384
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2385
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2386
   gcv.foreground = pw->passwd_foreground;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2387
   gcv.font = pw->passwd_font->fid;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2388
   gc1 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground|GCFont, &gcv);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2389
@@ -1221,6 +1801,7 @@ update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2390
   XFreeGC (si->dpy, gc1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2391
   XFreeGC (si->dpy, gc2);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2392
   XSync (si->dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2393
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2394
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2395
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2396
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2397
@@ -1252,6 +1833,9 @@ cleanup_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2398
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2399
   passwd_dialog_data *pw;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2400
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2401
+  if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2402
+    fprintf (stderr, "cleanup_passwd_window\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2403
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2404
   if (!(pw = si->pw_data))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2405
     return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2406
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2407
@@ -1269,7 +1853,13 @@ cleanup_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2408
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2409
   memset (pw->typed_passwd, 0, sizeof(pw->typed_passwd));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2410
   memset (pw->typed_passwd_char_size, 0, sizeof(pw->typed_passwd_char_size));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2411
-  memset (pw->passwd_string, 0, strlen(pw->passwd_string));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2412
+  if (pw->passwd_string)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2413
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2414
+      memset (pw->passwd_string, 0, strlen(pw->passwd_string));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2415
+      free (pw->passwd_string);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2416
+      pw->passwd_string = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2417
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2418
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2419
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2420
   if (pw->timer)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2421
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2422
@@ -1292,8 +1882,10 @@ destroy_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2423
   passwd_dialog_data *pw = si->pw_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2424
   saver_screen_info *ssi = pw->prompt_screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2425
   Colormap cmap = DefaultColormapOfScreen (ssi->screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2426
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2427
   Pixel black = BlackPixelOfScreen (ssi->screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2428
   Pixel white = WhitePixelOfScreen (ssi->screen);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2429
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2430
   XEvent event;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2431
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2432
   cleanup_passwd_window (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2433
@@ -1309,6 +1901,81 @@ destroy_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2434
       si->cached_passwd = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2435
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2436
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2437
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2438
+  /* reset global flag to indicate passwd dialog is no longer there */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2439
+  g_passwd_dialog_created = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2440
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2441
+  if (si->external_passwd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2442
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2443
+      /* kill the child etc. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2444
+      write_to_child (si, "cmd_exit", NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2445
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2446
+      if (pw->stdin_file)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2447
+        fclose (pw->stdin_file);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2448
+      if (pw->stdin_fd != -1)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2449
+        close_and_invalidate (&pw->stdin_fd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2450
+      if (pw->stdout_input_id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2451
+        XtRemoveInput (pw->stdout_input_id);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2452
+      if (pw->stdout_file)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2453
+        fclose (pw->stdout_file);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2454
+      else if (pw->stdout_fd != -1)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2455
+        close_and_invalidate (&pw->stdout_fd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2456
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2457
+      if (si->passwd_pid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2458
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2459
+          kill_job (si, si->passwd_pid, SIGTERM);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2460
+          si->passwd_pid = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2461
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2462
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2463
+      free (si->raise_wins);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2464
+      si->raise_wins = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2465
+      si->num_raise_wins = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2466
+      si->max_raise_wins = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2467
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2468
+      if (si->override_wins)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2469
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2470
+          int n;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2471
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2472
+          unsigned long valuemask = CWOverrideRedirect;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2473
+          XSetWindowAttributes setwinattr;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2474
+          setwinattr.override_redirect = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2475
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2476
+          for (n = 0; n < si->num_override_wins; n++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2477
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2478
+              XChangeWindowAttributes (si->dpy, si->override_wins[n],
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2479
+                                       valuemask, &setwinattr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2480
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2481
+          free(si->override_wins);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2482
+          si->override_wins = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2483
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2484
+      si->num_override_wins = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2485
+      si->max_override_wins = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2486
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2487
+      si->pw_data->got_windowid = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2488
+      si->external_passwd = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2489
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2490
+      /* restore any metacity keys we temporarily disabled */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2491
+      if (client)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2492
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2493
+          if (global_switch_key)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2494
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2495
+              gconf_client_set_string (client, switch_windows_gconf_key,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2496
+                                       global_switch_key, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2497
+              g_free(global_switch_key);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2498
+              global_switch_key = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2499
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2500
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2501
+          if (global_menu_key)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2502
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2503
+              gconf_client_set_string (client, main_menu_gconf_key,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2504
+                                       global_menu_key, NULL);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2505
+              g_free(global_menu_key);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2506
+              global_menu_key = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2507
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2508
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2509
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2510
+#endif /* HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2511
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2512
   move_mouse_grab (si, RootWindowOfScreen (ssi->screen),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2513
                    ssi->cursor, ssi->number);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2514
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2515
@@ -1343,7 +2010,14 @@ destroy_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2516
         fprintf (stderr, "%s: %d: destroying password dialog.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2517
                  blurb(), pw->prompt_screen->number);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2518
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2519
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2520
+      /* Ignore X error if window was already closed by the child,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2521
+         and make sure any VisibilityNotify events are removed
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2522
+         from the event queue before we forget the window id. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2523
+      safe_XDestroyWindow (si->dpy, si->passwd_dialog);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2524
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2525
       XDestroyWindow (si->dpy, si->passwd_dialog);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2526
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2527
       si->passwd_dialog = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2528
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2529
   
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2530
@@ -1354,6 +2028,7 @@ destroy_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2531
       pw->save_under = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2532
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2533
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2534
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2535
   if (pw->heading_label) free (pw->heading_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2536
   if (pw->body_label)    free (pw->body_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2537
   if (pw->user_label)    free (pw->user_label);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2538
@@ -1404,6 +2079,7 @@ destroy_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2539
       pw->logo_pixels = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2540
       pw->logo_npixels = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2541
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2542
+#endif /* ! HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2543
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2544
   if (pw->save_under)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2545
     XFreePixmap (si->dpy, pw->save_under);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2546
@@ -1411,9 +2087,12 @@ destroy_passwd_window (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2547
   if (cmap)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2548
     XInstallColormap (si->dpy, cmap);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2549
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2550
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2551
+  /* si->pw_data is globally allocated and never freed when HAVE_XSS_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2552
   memset (pw, 0, sizeof(*pw));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2553
   free (pw);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2554
   si->pw_data = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2555
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2556
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2557
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2558
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2559
@@ -1426,6 +2105,49 @@ ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2560
   return 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2561
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2562
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2563
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2564
+/* Catch errors from XRestackWindows, since there's an inherent race
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2565
+   condition in which other clients can destroy windows between when
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2566
+   we get the notification event and when we send the RestackWindows
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2567
+   response to it. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2568
+static Bool
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2569
+safe_XRestackWindows(Display *dpy, Window windows[], int nwindows)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2570
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2571
+  XErrorHandler old_handler;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2572
+  XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2573
+  error_handler_hit_p = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2574
+  old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2575
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2576
+  XRestackWindows (dpy, windows, nwindows);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2577
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2578
+  XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2579
+  XSetErrorHandler (old_handler);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2580
+  XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2581
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2582
+  return (!error_handler_hit_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2583
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2584
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2585
+static Bool
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2586
+safe_XSendEvent(Display *dpy, Window w, Bool propagate,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2587
+                long event_mask, XEvent *event_send)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2588
+{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2589
+  Status status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2590
+  XErrorHandler old_handler;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2591
+  XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2592
+  error_handler_hit_p = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2593
+  old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2594
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2595
+  status = XSendEvent (dpy, w, propagate, event_mask, event_send);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2596
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2597
+  XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2598
+  XSetErrorHandler (old_handler);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2599
+  XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2600
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2601
+  return (!error_handler_hit_p && status);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2602
+}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2603
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2604
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2605
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2606
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2607
 #ifdef HAVE_XHPDISABLERESET
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2608
 /* This function enables and disables the C-Sh-Reset hot-key, which
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2609
@@ -1627,6 +2349,17 @@ passwd_animate_timer (XtPointer closure, XtIntervalId *id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2610
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2611
   if (!pw) return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2612
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2613
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2614
+  /* We want to make sure dialog is up before we update countdown timer */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2615
+  if (!si->passwd_dialog)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2616
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2617
+      if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2618
+        fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2619
+                 "-->passwd_animate_timer() returning..no dialog yet\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2620
+      return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2621
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2622
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2623
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2624
   pw->ratio -= (1.0 / ((double) si->prefs.passwd_timeout / (double) tick));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2625
   if (pw->ratio < 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2626
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2627
@@ -1646,6 +2379,7 @@ passwd_animate_timer (XtPointer closure, XtIntervalId *id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2628
   idle_timer ((XtPointer) si, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2629
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2630
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2631
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2632
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2633
 static XComposeStatus *compose_status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2634
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2635
@@ -1723,6 +2457,7 @@ finished_typing_passwd (saver_info *si, passwd_dialog_data *pw)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2636
       update_passwd_window (si, "", pw->ratio);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2637
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2638
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2639
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2640
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2641
 static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2642
 handle_passwd_key (saver_info *si, XKeyEvent *event)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2643
@@ -1730,7 +2465,8 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2644
   passwd_dialog_data *pw = si->pw_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2645
   unsigned char decoded [MAX_BYTES_PER_CHAR * 10]; /* leave some slack */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2646
   KeySym keysym = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2647
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2648
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2649
+ 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2650
   /* XLookupString may return more than one character via XRebindKeysym;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2651
      and on some systems it returns multi-byte UTF-8 characters (contrary
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2652
      to its documentation, which says it returns only Latin1.)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2653
@@ -1764,11 +2500,40 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2654
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2655
   decoded[decoded_size] = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2656
   pw->passwd_changed_p = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2657
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2658
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2659
   /* Add 10% to the time remaining every time a key is pressed. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2660
   pw->ratio += 0.1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2661
   if (pw->ratio > 1) pw->ratio = 1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2662
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2663
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2664
+  if (si->pw_data->got_windowid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2665
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2666
+      Bool status;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2667
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2668
+      if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2669
+        fprintf (stderr, "event loop..gotwindowid..and keypress event...\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2670
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2671
+      event->window = si->passwd_dialog;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2672
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2673
+      status = safe_XSendEvent (si->dpy, si->passwd_dialog,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2674
+                                False, KeyPressMask, (XEvent *) event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2675
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2676
+      if (si->prefs.verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2677
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2678
+          if (status)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2679
+            fprintf (stderr, "sent key...\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2680
+          else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2681
+            fprintf (stderr, "error %d sending key...\n", status);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2682
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2683
+      update_passwd_window (si, NULL, pw->ratio);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2684
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2685
+  else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2686
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2687
+      swallow_unlock_typeahead_events (si, (XEvent *) event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2688
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2689
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2690
+#else /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2691
   if (decoded_size == 1)		/* Handle single-char commands */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2692
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2693
       switch (*decoded)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2694
@@ -1858,6 +2623,7 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2695
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2696
       update_passwd_window (si, "", pw->ratio);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2697
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2698
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2699
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2700
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2701
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2702
@@ -1880,7 +2646,9 @@ passwd_event_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2703
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2704
   passwd_animate_timer ((XtPointer) si, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2705
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2706
-  while (si->unlock_state == ul_read)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2707
+  si->pw_data->got_passwd = FALSE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2708
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2709
+  while (si->unlock_state == ul_read && si->pw_data->got_passwd == FALSE)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2710
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2711
       XtAppNextEvent (si->app, &event.x_event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2712
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2713
@@ -1921,12 +2689,17 @@ passwd_event_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2714
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2715
       if (event.x_event.xany.window == si->passwd_dialog && 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2716
           event.x_event.xany.type == Expose)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2717
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2718
+	XtDispatchEvent (&event.x_event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2719
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2720
 	draw_passwd_window (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2721
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2722
       else if (event.x_event.xany.type == KeyPress)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2723
         {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2724
           handle_passwd_key (si, &event.x_event.xkey);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2725
           si->pw_data->caps_p = (event.x_event.xkey.state & LockMask);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2726
         }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2727
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2728
       else if (event.x_event.xany.type == ButtonPress || 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2729
                event.x_event.xany.type == ButtonRelease)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2730
 	{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2731
@@ -1935,6 +2708,82 @@ passwd_event_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2732
 	  if (si->pw_data->login_button_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2733
 	    handle_login_button (si, &event.x_event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2734
 	}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2735
+#endif /* !HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2736
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2737
+ /*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2738
+  5077974 P1 "Bug 147583: Screen Lock unlocks because of GOK dwell movement in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2739
+		core pointer mode"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2740
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2741
+  ScreenLock did not unlock the screen, but WM's XRestackWindow() did.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2742
+  Once WM/metacity fixes the problem, the code can be removed.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2743
+  The problem:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2744
+    repositioning the Wids in the wrong positions when
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2745
+    1. the window type is changed from NORMAL to DOCK or vice versa
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2746
+    2. the Wid is managed
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2747
+    within the X window stack with or without screen-lock in a mixed Wids
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2748
+  there are two temp. get-around solutions:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2749
+    1. non-managed GOK or MAG Wid
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2750
+    or
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2751
+    2. screensaver picks up the WM's restacking task and fixes the prevous
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2752
+       restacking problem.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2753
+       the cons: there is a flashing screen when corepointer is touching
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2754
+       GOK or MAG and mouse is moved in a fast way
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2755
+       when GOK or MAG window type is DOCK only.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2756
+       and it is not a good temp. get-around solution.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2757
+       This is the only choice if WM did not want to fix the problem now
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2758
+       and AT group did not want to use non-managed Wids.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2759
+       Now, GOK only supports 2nd USB/mouse/Dwell, corepointer is supposed
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2760
+       not to be used, and GOK cannot disable it
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2761
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2762
+/*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2763
+     bugid 6769901,6839026: popup windows appearing through xscreensaver
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2764
+*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2765
+      else if (((event.x_event.xany.type == UnmapNotify)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2766
+             || (event.x_event.xany.type == MapNotify)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2767
+             || (event.x_event.xany.type == VisibilityNotify)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2768
+             || (event.x_event.xany.type == ConfigureNotify)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2769
+             || (event.x_event.xany.type == PropertyNotify)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2770
+             || (event.x_event.xany.type == CreateNotify)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2771
+             || (event.x_event.xany.type == ReparentNotify))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2772
+             && (si->passwd_dialog))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2773
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2774
+          /* Find the handle of popup window
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2775
+           * Note: we can not get handle of popup window with
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2776
+           * event.xany.window, thats why we have switch cases.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2777
+           */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2778
+          Window wPopWin = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2779
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2780
+          switch(event.x_event.xany.type)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2781
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2782
+            case ConfigureNotify:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2783
+              wPopWin = event.x_event.xconfigure.window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2784
+              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2785
+            case CreateNotify:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2786
+              wPopWin = event.x_event.xcreatewindow.window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2787
+              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2788
+            case VisibilityNotify:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2789
+              wPopWin = event.x_event.xvisibility.window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2790
+              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2791
+            default:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2792
+              break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2793
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2794
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2795
+          if (wPopWin)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2796
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2797
+              saver_screen_info *ssi = find_screen_for_window (si, wPopWin);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2798
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2799
+              /* This if case is for safety, it prevent screensaver stuck in
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2800
+               * loop of ConfigureNotify
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2801
+               */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2802
+              if ((wPopWin != si->passwd_dialog) && (ssi != NULL) &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2803
+                  (wPopWin != ssi->screensaver_window) &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2804
+                  (wPopWin != ssi->stderr_overlay_window))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2805
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2806
+                  restack_my_windows(si, ssi, wPopWin);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2807
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2808
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2809
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2810
+        /* the above new code for restacking under the condition */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2811
       else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2812
 	XtDispatchEvent (&event.x_event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2813
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2814
@@ -1960,8 +2809,13 @@ passwd_event_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2815
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2816
   if (msg)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2817
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2818
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2819
+      write_to_child (si, "ul_message", msg);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2820
+      usleep (250000);  /* 1/4 second */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2821
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2822
       si->pw_data->i_beam = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2823
       update_passwd_window (si, msg, 0.0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2824
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2825
       XSync (si->dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2826
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2827
       /* Swallow all pending KeyPress/KeyRelease events. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2828
@@ -1977,6 +2831,10 @@ passwd_event_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2829
 static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2830
 handle_typeahead (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2831
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2832
+/* HAVE_XSCREENSAVER_LOCK: typeahead events are flushed to the external
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2833
+   dialog program in handle_passwd_input when we get the dialog_win notice
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2834
+   that it has created the window */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2835
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2836
   passwd_dialog_data *pw = si->pw_data;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2837
   int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2838
   if (!si->unlock_typeahead)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2839
@@ -2004,6 +2862,7 @@ handle_typeahead (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2840
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2841
   free (si->unlock_typeahead);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2842
   si->unlock_typeahead = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2843
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2844
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2845
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2846
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2847
@@ -2109,9 +2968,11 @@ gui_auth_conv(int num_msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2848
 	  free(prompt_trimmed);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2849
       }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2850
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2851
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2852
       compose_status = calloc (1, sizeof (*compose_status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2853
       if (!compose_status)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2854
 	goto fail;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2855
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2856
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2857
       si->unlock_state = ul_read;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2858
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2859
@@ -2121,7 +2982,14 @@ gui_auth_conv(int num_msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2860
       if (si->unlock_state == ul_cancel)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2861
 	goto fail;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2862
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2863
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2864
+      if ((si->unlock_state != ul_time) && si->pw_data->passwd_string)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2865
+        responses[i].response = strdup (si->pw_data->passwd_string);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2866
+      else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2867
+        goto fail;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2868
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2869
       responses[i].response = strdup(si->pw_data->typed_passwd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2870
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2871
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2872
       /* Cache the first response to a PROMPT_NOECHO to save prompting for
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2873
        * each auth mechanism. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2874
@@ -2129,8 +2997,10 @@ gui_auth_conv(int num_msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2875
 	  auth_msgs[i].type == AUTH_MSGTYPE_PROMPT_NOECHO)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2876
 	si->cached_passwd = strdup(responses[i].response);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2877
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2878
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2879
       free (compose_status);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2880
       compose_status = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2881
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2882
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2883
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2884
   *resp = responses;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2885
@@ -2138,9 +3008,11 @@ gui_auth_conv(int num_msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2886
   return (si->unlock_state == ul_finished) ? 0 : -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2887
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2888
 fail:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2889
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2890
   if (compose_status)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2891
     free (compose_status);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2892
   compose_status = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2893
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2894
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2895
   if (responses)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2896
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2897
@@ -2196,11 +3068,14 @@ auth_finished_cb (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2898
       if (XPending (si->dpy))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2899
         {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2900
           XNextEvent (si->dpy, &event);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2901
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2902
           if (event.xany.window == si->passwd_dialog && 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2903
               event.xany.type == Expose)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2904
             draw_passwd_window (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2905
-          else if (event.xany.type == ButtonPress || 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2906
-                   event.xany.type == KeyPress)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2907
+          else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2908
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2909
+            if (event.xany.type == ButtonPress ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2910
+                event.xany.type == KeyPress)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2911
             break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2912
           XSync (si->dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2913
         }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2914
diff --git a/driver/passwd-pam.c b/driver/passwd-pam.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2915
--- a/driver/passwd-pam.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2916
+++ b/driver/passwd-pam.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2917
@@ -39,10 +39,16 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2918
 #ifndef NO_LOCKING  /* whole file */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2919
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2920
 #include <stdlib.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2921
+#include <xscreensaver-intl.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2922
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2923
 #ifdef HAVE_UNISTD_H
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2924
 # include <unistd.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2925
 #endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2926
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2927
+#ifdef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2928
+# include <deflt.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2929
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2930
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2931
 extern char *blurb(void);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2932
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2933
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2934
@@ -58,6 +64,7 @@ extern char *blurb(void);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2935
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2936
 #include <sys/stat.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2937
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2938
+#include "dialog-data.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2939
 #include "auth.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2940
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2941
 extern sigset_t block_sigchld (void);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2942
@@ -82,7 +89,10 @@ extern void unblock_sigchld (void);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2943
 #endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2944
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2945
 static int pam_conversation (int nmsgs,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2946
-                             const struct pam_message **msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2947
+#ifndef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2948
+                             const
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2949
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2950
+                             struct pam_message **msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2951
                              struct pam_response **resp,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2952
                              void *closure);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2953
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2954
@@ -183,6 +193,11 @@ pam_try_unlock(saver_info *si, Bool verbose_p,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2955
   struct pam_conv pc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2956
   sigset_t set;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2957
   struct timespec timeout;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2958
+  int pam_auth_status = 0;  /* Specific for pam_authenticate() status*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2959
+  int acct_rc, setcred_rc, chauth_rc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2960
+  int pam_flags = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2961
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2962
+  uid_t euid = geteuid();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2963
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2964
   pc.conv = &pam_conversation;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2965
   pc.appdata_ptr = (void *) si;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2966
@@ -191,6 +206,23 @@ pam_try_unlock(saver_info *si, Bool verbose_p,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2967
      `closure' argument to pc.conv always comes in as random garbage. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2968
   suns_pam_implementation_blows = (void *) si;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2969
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2970
+#ifdef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2971
+  if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2972
+    fprintf (stderr, "Before uid=%d euid=%d \n\n", getuid(), geteuid());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2973
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2974
+  if (seteuid (0) != 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2975
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2976
+      if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2977
+        perror("Could not change euid to root, pam may not work!\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2978
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2979
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2980
+  if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2981
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2982
+      fprintf (stderr, "After seteuid(0) uid=%d euid=%d \n\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2983
+               getuid(), geteuid());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2984
+      fprintf (stderr, "PAM is using SERVICE_NAME=\"%s\"\n\n", service);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2985
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2986
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2987
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2988
   /* Initialize PAM.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2989
    */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2990
@@ -201,11 +233,35 @@ pam_try_unlock(saver_info *si, Bool verbose_p,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2991
              status, PAM_STRERROR (pamh, status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2992
   if (status != PAM_SUCCESS) goto DONE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2993
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2994
+#ifdef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2995
+  /* Check /etc/default/login to see if we should add
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2996
+     PAM_DISALLOW_NULL_AUTHTOK to pam_flags */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2997
+  if (defopen("/etc/default/login") == 0) {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2998
+    char *ptr;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  2999
+    int flags = defcntl(DC_GETFLAGS, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3000
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3001
+    TURNOFF(flags, DC_CASE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3002
+    (void) defcntl(DC_SETFLAGS, flags);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3003
+    if ((ptr = defread("PASSREQ=")) != NULL &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3004
+        strcasecmp("YES", ptr) == 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3005
+      {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3006
+        pam_flags |= PAM_DISALLOW_NULL_AUTHTOK;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3007
+      }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3008
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3009
+    (void) defopen((char *)NULL); /* close current file */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3010
+  }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3011
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3012
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3013
   /* #### We should set PAM_TTY to the display we're using, but we
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3014
      don't have that handy from here.  So set it to :0.0, which is a
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3015
      good guess (and has the bonus of counting as a "secure tty" as
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3016
      far as PAM is concerned...)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3017
    */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3018
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3019
+/* From the pam trace and log file, it is found out that the
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3020
+   Sun pam modules can drive itself.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3021
+*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3022
+#ifndef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3023
   {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3024
     char *tty = strdup (":0.0");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3025
     status = pam_set_item (pamh, PAM_TTY, tty);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3026
@@ -214,6 +270,7 @@ pam_try_unlock(saver_info *si, Bool verbose_p,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3027
                blurb(), tty, status, PAM_STRERROR(pamh, status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3028
     free (tty);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3029
   }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3030
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3031
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3032
   /* Try to authenticate as the current user.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3033
      We must turn off our SIGCHLD handler for the duration of the call to
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3034
@@ -243,43 +300,102 @@ pam_try_unlock(saver_info *si, Bool verbose_p,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3035
   timeout.tv_sec = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3036
   timeout.tv_nsec = 1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3037
   set = block_sigchld();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3038
-  status = pam_authenticate (pamh, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3039
+  pam_auth_status = pam_authenticate (pamh, pam_flags);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3040
 # ifdef HAVE_SIGTIMEDWAIT
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3041
   sigtimedwait (&set, NULL, &timeout);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3042
   /* #### What is the portable thing to do if we don't have it? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3043
 # endif /* HAVE_SIGTIMEDWAIT */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3044
   unblock_sigchld();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3045
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3046
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3047
+  /* Send status message to unlock dialog */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3048
+  if (pam_auth_status == PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3049
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3050
+      if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3051
+        write_to_child (si, "ul_ok", PAM_STRERROR (pamh, pam_auth_status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3052
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3053
+  else if (si->unlock_state != ul_cancel && si->unlock_state != ul_time)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3054
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3055
+      write_to_child (si, "ul_fail", PAM_STRERROR (pamh, pam_auth_status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3056
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3057
+  if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3058
+    sleep (1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3059
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3060
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3061
+  if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3062
+      fprintf (stderr, "after calling pam_authenticate state is: %s\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3063
+               si->unlock_state == ul_success ? "ul_success" : "ul_fail");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3064
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3065
   if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3066
     fprintf (stderr, "%s:   pam_authenticate (...) ==> %d (%s)\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3067
-             blurb(), status, PAM_STRERROR(pamh, status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3068
+             blurb(), pam_auth_status, PAM_STRERROR(pamh, pam_auth_status));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3069
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3070
-  if (status == PAM_SUCCESS)  /* Win! */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3071
+  if (pam_auth_status == PAM_SUCCESS)  /* Win! */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3072
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3073
-      int status2;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3074
+      /* perform PAM account validation procedures for login user only */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3075
+      acct_rc   = pam_acct_mgmt(pamh, pam_flags);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3076
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3077
-      /* We don't actually care if the account modules fail or succeed,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3078
-       * but we need to run them anyway because certain pam modules
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3079
-       * depend on side effects of the account modules getting run.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3080
-       */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3081
-      status2 = pam_acct_mgmt (pamh, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3082
+      /******************************************************************
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3083
+           ignore other cases for the time being
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3084
+           PAM_USER_UNKNOWN, PAM_AUTH_ERR, PAM_ACCT_EXPIRED
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3085
+           (password mgn service module)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3086
+           same as pam_setcred(), focus on auth. service module only
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3087
+       *****************************************************************/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3088
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3089
       if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3090
         fprintf (stderr, "%s:   pam_acct_mgmt (...) ==> %d (%s)\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3091
-                 blurb(), status2, PAM_STRERROR(pamh, status2));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3092
+                 blurb(), acct_rc, PAM_STRERROR(pamh, acct_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3093
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3094
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3095
+      /* Send status message to unlock dialog ***/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3096
+      if (acct_rc == PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3097
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3098
+          if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3099
+            write_to_child (si, "ul_acct_ok", PAM_STRERROR(pamh, acct_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3100
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3101
+      else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3102
+        write_to_child (si, "ul_acct_fail", PAM_STRERROR(pamh, acct_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3103
+      if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3104
+        sleep (1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3105
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3106
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3107
       /* HPUX for some reason likes to make PAM defines different from
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3108
        * everyone else's. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3109
 #ifdef PAM_AUTHTOKEN_REQD
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3110
-      if (status2 == PAM_AUTHTOKEN_REQD)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3111
+      if (acct_rc == PAM_AUTHTOKEN_REQD)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3112
 #else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3113
-      if (status2 == PAM_NEW_AUTHTOK_REQD)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3114
+      if (acct_rc == PAM_NEW_AUTHTOK_REQD)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3115
 #endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3116
         {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3117
-          status2 = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3118
+          int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3119
+          for (i = 0; i < 3; i++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3120
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3121
+              chauth_rc  = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3122
+              if (chauth_rc == PAM_AUTHTOK_ERR ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3123
+                  chauth_rc  == PAM_TRY_AGAIN )
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3124
+                {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3125
+                  i = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3126
+                  si->unlock_state = ul_read;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3127
+                }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3128
+              else break; /* get out of the loop */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3129
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3130
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3131
           if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3132
             fprintf (stderr, "%s: pam_chauthtok (...) ==> %d (%s)\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3133
-                     blurb(), status2, PAM_STRERROR(pamh, status2));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3134
+                     blurb(), chauth_rc, PAM_STRERROR(pamh, chauth_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3135
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3136
+          if (chauth_rc != PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3137
+            {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3138
+              pam_auth_status = chauth_rc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3139
+              goto DONE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3140
+            }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3141
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3142
+      else if (acct_rc != PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3143
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3144
+          pam_auth_status = acct_rc;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3145
+          write_to_child (si, "pw_acct_fail", PAM_STRERROR(pamh, acct_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3146
+          sleep (3);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3147
+          goto DONE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3148
         }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3149
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3150
       /* Each time we successfully authenticate, refresh credentials,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3151
@@ -291,24 +406,57 @@ pam_try_unlock(saver_info *si, Bool verbose_p,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3152
          says that the Linux PAM library ignores that one, and only refreshes
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3153
          credentials when using PAM_REINITIALIZE_CRED.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3154
        */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3155
-      status2 = pam_setcred (pamh, PAM_REINITIALIZE_CRED);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3156
+      setcred_rc = pam_setcred (pamh, PAM_REINITIALIZE_CRED);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3157
       if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3158
         fprintf (stderr, "%s:   pam_setcred (...) ==> %d (%s)\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3159
-                 blurb(), status2, PAM_STRERROR(pamh, status2));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3160
+                 blurb(), setcred_rc, PAM_STRERROR(pamh, setcred_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3161
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3162
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3163
+      /* Send status message to unlock dialog ***/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3164
+      if (setcred_rc == PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3165
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3166
+          if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3167
+            write_to_child (si, "ul_setcred_ok", PAM_STRERROR(pamh, setcred_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3168
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3169
+      else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3170
+        write_to_child (si, "ul_setcred_fail", PAM_STRERROR(pamh, setcred_rc));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3171
+      if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3172
+        sleep (1);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3173
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3174
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3175
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3176
  DONE:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3177
   if (pamh)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3178
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3179
-      int status2 = pam_end (pamh, status);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3180
-      pamh = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3181
+      int status2 = pam_end (pamh, pam_auth_status);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3182
+      pamh = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3183
       if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3184
         fprintf (stderr, "%s: pam_end (...) ==> %d (%s)\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3185
                  blurb(), status2,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3186
                  (status2 == PAM_SUCCESS ? "Success" : "Failure"));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3187
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3188
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3189
-  if (status == PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3190
+  if (seteuid (euid) != 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3191
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3192
+      if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3193
+        perror("Error pam could not revert euid to user running as euid root,"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3194
+               " locking may not work now\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3195
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3196
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3197
+  if (verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3198
+    fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3199
+             "<--end of pam_authenticate() returning ok_to_unblank = %d\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3200
+             (int) ((pam_auth_status == PAM_SUCCESS) ? True : False));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3201
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3202
+  if (si->pw_data->passwd_string)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3203
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3204
+      memset(si->pw_data->passwd_string, 0,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3205
+             strlen(si->pw_data->passwd_string));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3206
+      free (si->pw_data->passwd_string);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3207
+      si->pw_data->passwd_string = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3208
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3209
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3210
+  if (pam_auth_status == PAM_SUCCESS)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3211
     si->unlock_state = ul_success;	     /* yay */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3212
   else if (si->unlock_state == ul_cancel ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3213
            si->unlock_state == ul_time)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3214
@@ -334,6 +482,13 @@ pam_priv_init (int argc, char **argv, Bool verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3215
   const char file2[] = "/etc/pam.conf";
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3216
   struct stat st;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3217
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3218
+#ifdef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3219
+  if (! verbose_p)      /* SUN addition: only print warnings in verbose mode */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3220
+    {                   /* since they are rarely useful and mostly just      */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3221
+      return True;      /* cause confusion when users see them.		     */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3222
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3223
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3224
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3225
 # ifndef S_ISDIR
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3226
 #  define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3227
 # endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3228
@@ -360,6 +515,8 @@ pam_priv_init (int argc, char **argv, Bool verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3229
                 break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3230
               }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3231
           fclose (f);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3232
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3233
+#ifndef __sun  /* disable the misleading message */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3234
           if (!ok)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3235
             {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3236
               fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3237
@@ -367,9 +524,11 @@ pam_priv_init (int argc, char **argv, Bool verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3238
                   "%s: password authentication via PAM is unlikely to work.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3239
                        blurb(), file2, PAM_SERVICE_NAME, blurb());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3240
             }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3241
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3242
         }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3243
       /* else warn about file2 existing but being unreadable? */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3244
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3245
+#ifndef __sun  /* disable the misleading message */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3246
   else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3247
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3248
       fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3249
@@ -377,15 +536,19 @@ pam_priv_init (int argc, char **argv, Bool verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3250
                "%s: password authentication via PAM is unlikely to work.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3251
                blurb(), file2, file, blurb());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3252
     }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3253
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3254
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3255
   /* Return true anyway, just in case. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3256
   return True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3257
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3258
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3259
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3260
-static int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3261
+int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3262
 pam_conversation (int nmsgs,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3263
-		  const struct pam_message **msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3264
+#ifndef __sun
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3265
+                  const
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3266
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3267
+		  struct pam_message **msg,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3268
 		  struct pam_response **resp,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3269
 		  void *vsaver_info)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3270
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3271
diff --git a/driver/passwd.c b/driver/passwd.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3272
--- a/driver/passwd.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3273
+++ b/driver/passwd.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3274
@@ -35,6 +35,7 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3275
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3276
 #include <X11/Intrinsic.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3277
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3278
+#include "dialog-data.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3279
 #include "xscreensaver.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3280
 #include "auth.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3281
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3282
diff --git a/driver/setuid.c b/driver/setuid.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3283
--- a/driver/setuid.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3284
+++ b/driver/setuid.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3285
@@ -145,7 +145,10 @@ set_ids_by_number (uid_t uid, gid_t gid, char **message_ret)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3286
     gid_errno = errno ? errno : -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3287
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3288
   errno = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3289
-  if (setuid (uid) != 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3290
+/*mali  if (setuid (uid) != 0)**we need root privs back at pam_authenticate
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3291
+  this is causing to loose root priv for good, not good **/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3292
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3293
+  if (seteuid (uid) != 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3294
     uid_errno = errno ? errno : -1;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3295
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3296
   if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3297
diff --git a/driver/subprocs.c b/driver/subprocs.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3298
--- a/driver/subprocs.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3299
+++ b/driver/subprocs.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3300
@@ -243,7 +243,11 @@ show_job_list (void)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3301
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3302
 static void clean_job_list (void);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3303
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3304
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3305
+struct screenhack_job *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3306
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3307
 static struct screenhack_job *
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3308
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3309
 make_job (pid_t pid, int screen, const char *cmd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3310
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3311
   struct screenhack_job *job = (struct screenhack_job *) malloc (sizeof(*job));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3312
@@ -407,7 +411,11 @@ unblock_sigchld (void)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3313
   block_sigchld_handler--;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3314
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3315
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3316
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3317
+int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3318
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3319
 static int
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3320
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3321
 kill_job (saver_info *si, pid_t pid, int signal)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3322
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3323
   saver_preferences *p = &si->prefs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3324
@@ -590,9 +598,14 @@ describe_dead_child (saver_info *si, pid_t kid, int wait_status)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3325
 	 mention them) if we've just killed the subprocess.  But mention them
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3326
 	 if they happen on their own.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3327
        */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3328
-      if (!job ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3329
-	  (exit_status != 0 &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3330
-	   (p->verbose_p || job->status != job_killed)))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3331
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3332
+      if ((!job
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3333
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3334
+	   && kid != si->passwd_pid
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3335
+#endif /* HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3336
+	      ) ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3337
+	   (exit_status != 0 &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3338
+	    (p->verbose_p || (job && job->status != job_killed))))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3339
         {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3340
           /* Don't call fprintf() from signal handlers, as it might malloc.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3341
 	  fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3342
@@ -632,8 +645,12 @@ describe_dead_child (saver_info *si, pid_t kid, int wait_status)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3343
   else if (WIFSIGNALED (wait_status))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3344
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3345
       if (p->verbose_p ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3346
-	  !job ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3347
-	  job->status != job_killed ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3348
+	  (!job
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3349
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3350
+	   && kid != si->passwd_pid
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3351
+#endif /* HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3352
+		  ) ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3353
+	  (job && job->status != job_killed) ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3354
 	  WTERMSIG (wait_status) != SIGTERM)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3355
         {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3356
           /* Don't call fprintf() from signal handlers, as it might malloc.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3357
@@ -701,12 +718,20 @@ describe_dead_child (saver_info *si, pid_t kid, int wait_status)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3358
   /* Clear out the pid so that screenhack_running_p() knows it's dead.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3359
    */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3360
   if (!job || job->status == job_dead)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3361
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3362
     for (i = 0; i < si->nscreens; i++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3363
       {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3364
 	saver_screen_info *ssi = &si->screens[i];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3365
 	if (kid == ssi->pid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3366
 	  ssi->pid = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3367
       }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3368
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3369
+      if (kid == si->passwd_pid)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3370
+	{
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3371
+	  si->passwd_pid = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3372
+	}
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3373
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3374
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3375
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3376
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3377
 #else  /* VMS */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3378
diff --git a/driver/timers.c b/driver/timers.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3379
--- a/driver/timers.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3380
+++ b/driver/timers.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3381
@@ -47,6 +47,8 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3382
 #endif /* HAVE_RANDR */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3383
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3384
 #include "xscreensaver.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3385
+#include "types.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3386
+#include "dialog-data.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3387
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3388
 #undef ABS
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3389
 #define ABS(x)((x)<0?-(x):(x))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3390
@@ -60,6 +62,11 @@ static Bool proc_interrupts_activity_p (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3391
 #endif /* HAVE_PROC_INTERRUPTS */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3392
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3393
 static void check_for_clock_skew (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3394
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3395
+static void watchdog_timer (XtPointer closure, XtIntervalId *id);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3396
+extern Bool g_passwd_dialog_created;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3397
+extern Bool ok_to_unblank;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3398
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3399
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3400
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3401
 void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3402
@@ -255,7 +262,11 @@ cycle_timer (XtPointer closure, XtIntervalId *id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3403
        crash.  So, restart the thing once an hour. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3404
     how_long = 1000 * 60 * 60;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3405
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3406
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3407
+  if (si->external_passwd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3408
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3409
   if (si->dbox_up_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3410
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3411
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3412
       if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3413
 	fprintf (stderr, "%s: dialog box up; delaying hack change.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3414
@@ -308,7 +319,28 @@ activate_lock_timer (XtPointer closure, XtIntervalId *id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3415
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3416
   if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3417
     fprintf (stderr, "%s: timed out; activating lock.\n", blurb());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3418
-  set_locked_p (si, True);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3419
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3420
+  if (si->locked_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3421
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3422
+      if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3423
+        fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3424
+          "-->activate_lock_timer returning because screen already locked\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3425
+      return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3426
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3427
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3428
+  /* Make sure screen is blanked before posting dialog box */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3429
+  if (si->screen_blanked_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3430
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3431
+      set_locked_p (si, True);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3432
+      ok_to_unblank = unlock_p (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3433
+      if (ok_to_unblank == True)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3434
+        {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3435
+          set_locked_p(si,False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3436
+          unblank_screen(si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3437
+        }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3438
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3439
+  else /* blanking of screen failed reset lock flag */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3440
+    set_locked_p (si, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3441
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3442
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3443
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3444
@@ -587,14 +619,30 @@ dispatch_event (saver_info *si, XEvent *event)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3445
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3446
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3447
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3448
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3449
+void /* called from lock.c */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3450
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3451
 static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3452
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3453
 swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3454
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3455
   XEvent event;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3456
   char buf [100];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3457
   int i = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3458
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3459
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3460
+  if (!si->typeahead_events)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3461
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3462
+      /* Allocate enough space for 10 keys to be queued - if we get more
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3463
+         than that before the dialog is ready, it's most likely the user
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3464
+         left something sitting on the keyboard, and won't want them. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3465
+      si->typeahead_events = calloc(10, sizeof(XKeyEvent));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3466
+      if (si->typeahead_events == NULL)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3467
+        return;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3468
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3469
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3470
   memset (buf, 0, sizeof(buf));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3471
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3472
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3473
   event = *e;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3474
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3475
@@ -607,10 +655,12 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3476
           if (size != 1) continue;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3477
           switch (*s)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3478
             {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3479
+#ifndef HAVE_XSCREENSAVER_LOCK /* Let these be queued with the rest */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3480
             case '\010': case '\177':			/* Backspace */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3481
               if (i > 0) i--;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3482
               break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3483
             case '\025': case '\030':			/* Erase line */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3484
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3485
             case '\012': case '\015':			/* Enter */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3486
             case '\033':				/* ESC */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3487
               i = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3488
@@ -620,7 +670,17 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3489
                 break;  /* ignore space at beginning of line */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3490
               /* else, fall through */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3491
             default:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3492
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3493
+              /* Queue events to replay once dialog is ready */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3494
+              if (si->num_typeahead_events < 10)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3495
+                memcpy (&si->typeahead_events[si->num_typeahead_events++],
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3496
+                        &event, sizeof(XKeyEvent));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3497
+              else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3498
+                XBell (si->dpy, 0);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3499
+              i = 1; /* so that spaces are accepted after the beginning */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3500
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3501
               buf [i++] = *s;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3502
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3503
               break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3504
             }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3505
         }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3506
@@ -628,6 +688,7 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3507
     } while (i < sizeof(buf)-1 &&
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3508
              XCheckMaskEvent (si->dpy, KeyPressMask, &event));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3509
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3510
+#ifndef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3511
   buf[i] = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3512
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3513
   if (si->unlock_typeahead)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3514
@@ -642,6 +703,7 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3515
     si->unlock_typeahead = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3516
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3517
   memset (buf, 0, sizeof(buf));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3518
+#endif /* HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3519
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3520
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3521
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3522
@@ -824,6 +886,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3523
 	if (handle_clientmessage (si, &event.x_event, until_idle_p))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3524
           {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3525
             why = "ClientMessage";
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3526
+            si->emergency_lock_p = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3527
             goto DONE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3528
           }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3529
 	break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3530
@@ -838,6 +901,47 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3531
 	  }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3532
 	break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3533
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3534
+      case VisibilityNotify:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3535
+      {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3536
+        int k;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3537
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3538
+        if (p->debug_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3539
+          {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3540
+            fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3541
+                     "************************************\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3542
+                     "-->sleep_until_idle() event:VisibilityNotify\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3543
+                     "\t Window of VisibilityNotify:%x\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3544
+                     "\t until_idle_p=%d g_passwd_dialog_created=%d\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3545
+                     event.x_event.xvisibility.window,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3546
+                     until_idle_p, g_passwd_dialog_created);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3547
+            fflush(stderr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3548
+          }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3549
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3550
+        /* Don't raise root window when passwd dialog wants to come up */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3551
+        if (g_passwd_dialog_created == 0 && !until_idle_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3552
+          {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3553
+            if (event.x_event.xvisibility.state != VisibilityUnobscured)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3554
+              {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3555
+                for (k = 0; k < si->nscreens; k++)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3556
+                  {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3557
+                    saver_screen_info *ssi = &si->screens[k];
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3558
+                    XClearWindow (si->dpy, ssi->screensaver_window);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3559
+                    clear_stderr (ssi);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3560
+                    XMapRaised (si->dpy, ssi->screensaver_window);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3561
+                  }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3562
+                if (p->debug_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3563
+                  {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3564
+                    fprintf (stderr,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3565
+                             "A window is trying to popup.\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3566
+                             "Raising saver root Window.\n"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3567
+                             "************************************\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3568
+                    fflush(stderr);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3569
+                  }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3570
+              }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3571
+          }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3572
+        break;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3573
+      }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3574
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3575
       case KeyPress:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3576
       case ButtonPress:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3577
       /* Ignore release events so that hitting ESC at the password dialog
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3578
@@ -1457,7 +1561,11 @@ watchdog_timer (XtPointer closure, XtIntervalId *id)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3579
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3580
       Bool running_p = screenhack_running_p (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3581
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3582
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3583
+      if (si->external_passwd)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3584
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3585
       if (si->dbox_up_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3586
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3587
         {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3588
           if (si->prefs.debug_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3589
             fprintf (stderr, "%s: dialog box is up: not raising screen.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3590
diff --git a/driver/types.h b/driver/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3591
--- a/driver/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3592
+++ b/driver/types.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3593
@@ -250,12 +250,30 @@ struct saver_info {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3594
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3595
   int unlock_failures;		/* Counts failed login attempts while the
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3596
 				   screen is locked. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3597
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3598
+  Window *raise_wins;		/* List of windows to raise above the	*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3599
+  int num_raise_wins;		/*  virtual root/hack display, such as	*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3600
+  int max_raise_wins;		/*  accessibility helpers		*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3601
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3602
+  Window *override_wins;        /* Windows we had to unset the          */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3603
+  int num_override_wins;        /*  override_redirect attribute on and  */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3604
+  int max_override_wins;        /*  need to restore it on after unlock. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3605
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3606
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3607
+  pid_t passwd_pid;             /* The pid of the password dialog child if we
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3608
+                                   are running an external process for it. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3609
+  Bool external_passwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3610
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3611
+  XKeyEvent *typeahead_events;	/* Like unlock_typeahead, but as raw events */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3612
+  int num_typeahead_events;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3613
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3614
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3615
   char *unlock_typeahead;	/* If the screen is locked, and the user types
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3616
                                    a character, we assume that it is the first
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3617
                                    character of the password.  It's stored here
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3618
                                    for the password dialog to use to populate
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3619
                                    itself. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3620
+#endif /* HAVE_XSCREENSAVER_LOCK */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3621
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3622
   char *user;			/* The user whose session is locked. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3623
   char *cached_passwd;		/* Cached password, used to avoid multiple
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3624
diff --git a/driver/windows.c b/driver/windows.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3625
--- a/driver/windows.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3626
+++ b/driver/windows.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3627
@@ -1081,8 +1081,12 @@ safe_XConfigureWindow (Display *dpy, Window window,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3628
   return (!error_handler_hit_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3629
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3630
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3631
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3632
+Bool
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3633
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3634
 /* This might not be necessary, but just in case. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3635
 static Bool
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3636
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3637
 safe_XDestroyWindow (Display *dpy, Window window)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3638
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3639
   XErrorHandler old_handler;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3640
@@ -1096,6 +1100,14 @@ safe_XDestroyWindow (Display *dpy, Window window)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3641
   XSetErrorHandler (old_handler);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3642
   XSync (dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3643
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3644
+  /* clear any queued VisibilityNotify events so we don't cause XErrors
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3645
+     later when we try to process them and find the windowid is invalid */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3646
+  XEvent event;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3647
+  while (XCheckWindowEvent(dpy, window, VisibilityChangeMask, &event))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3648
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3649
+      /* discard event */ ;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3650
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3651
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3652
   return (!error_handler_hit_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3653
 }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3654
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3655
@@ -1210,6 +1222,7 @@ initialize_screensaver_window_1 (saver_screen_info *ssi)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3656
    */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3657
   attrs.event_mask = (KeyPressMask | KeyReleaseMask |
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3658
 		      ButtonPressMask | ButtonReleaseMask |
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3659
+		      VisibilityChangeMask |
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3660
 		      PointerMotionMask);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3661
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3662
   attrs.backing_store = NotUseful;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3663
@@ -1481,6 +1494,9 @@ raise_window (saver_info *si,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3664
   saver_preferences *p = &si->prefs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3665
   int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3666
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3667
+  if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3668
+      fprintf(stderr,"-->raise_window()\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3669
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3670
   if (si->demoing_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3671
     inhibit_fade = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3672
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3673
@@ -1695,6 +1711,9 @@ unblank_screen (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3674
   Bool unfade_p = (si->fading_possible_p && p->unfade_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3675
   int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3676
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3677
+  if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3678
+      fprintf(stderr,"-->unblank_screen()\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3679
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3680
   monitor_power_on (si, True);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3681
   reset_watchdog_timer (si, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3682
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3683
@@ -1983,7 +2002,7 @@ select_visual (saver_screen_info *ssi, const char *visual_name)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3684
       maybe_transfer_grabs (ssi, old_w, ssi->screensaver_window, ssi->number);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3685
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3686
       /* Now we can destroy the old window without horking our grabs. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3687
-      XDestroyWindow (si->dpy, old_w);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3688
+      safe_XDestroyWindow (si->dpy, old_w);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3689
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3690
       if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3691
 	fprintf (stderr, "%s: %d: destroyed old saver window 0x%lx.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3692
diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3693
--- a/driver/xscreensaver.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3694
+++ b/driver/xscreensaver.c
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3695
@@ -156,6 +156,8 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3696
 #include <X11/StringDefs.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3697
 #include <X11/Shell.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3698
 #include <X11/Xos.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3699
+#include <gconf/gconf-client.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3700
+#include <glib.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3701
 #include <time.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3702
 #include <sys/time.h>
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3703
 #include <netdb.h>	/* for gethostbyname() */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3704
@@ -217,6 +219,7 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3705
 #endif /* HAVE_RANDR */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3706
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3707
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3708
+#include "dialog-data.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3709
 #include "xscreensaver.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3710
 #include "version.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3711
 #include "yarandom.h"
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3712
@@ -228,11 +231,28 @@
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3713
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3714
 saver_info *global_si_kludge = 0;	/* I hate C so much... */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3715
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3716
+/* Globals */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3717
+Bool ok_to_unblank = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3718
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3719
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3720
+/* Global storage for gtk passwd lock dialog
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3721
+ * we assign this to si->pw_data and this is needed
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3722
+ * to set user/passwd labels on gtk lock dialog by
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3723
+ * pam conv function.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3724
+ */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3725
+passwd_dialog_data mygtkpwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3726
+passwd_dialog_data *ptr_mygtkpwd = &mygtkpwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3727
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3728
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3729
 char *progname = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3730
 char *progclass = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3731
 XrmDatabase db = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3732
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3733
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3734
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3735
+Atom XA_UNLOCK_RATIO;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3736
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3737
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3738
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3739
 static XrmOptionDescRec options [] = {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3740
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3741
@@ -630,6 +650,9 @@ connect_to_server (saver_info *si, int *argc, char **argv)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3742
 	{ &XA_XSETROOT_ID, "_XSETROOT_ID" },
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3743
 	{ &XA_ESETROOT_PMAP_ID, "ESETROOT_PMAP_ID" },
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3744
 	{ &XA_XROOTPMAP_ID, "_XROOTPMAP_ID" },
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3745
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3746
+	{ &XA_UNLOCK_RATIO, "UNLOCK_RATIO" },
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3747
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3748
 	{ NULL, NULL } /* Must be last to terminate list */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3749
       };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3750
     const struct atom_request *atom_lists[3] = { NULL, NULL, NULL };
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3751
@@ -1105,8 +1128,36 @@ static void
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3752
 main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3753
 {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3754
   saver_preferences *p = &si->prefs;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3755
-  Bool ok_to_unblank;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3756
+  /* Bool ok_to_unblank; made this a global flag, gets set in timers.c */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3757
   int i;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3758
+  const char *modulesptr = NULL;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3759
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3760
+/*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3761
+** CR4784055(P1)locked-screen dialog is inaccessible to Gnopernicus
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3762
+** voice for each type-in char in the password field of
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3763
+** pop-up dialog
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3764
+*/
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3765
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3766
+  /* BUG #6573182
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3767
+  ** g_type_init should be done before calling gconf_client routines
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3768
+  ** so that xscreensaver does not dump core if gconf daemon is not running.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3769
+  */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3770
+  g_type_init ();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3771
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3772
+  /*
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3773
+  ** 6395649 at-spi-registryd starts when screen is locked even
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3774
+  ** when accessible device support is off(SR)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3775
+  ** per AT core gp suggestion
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3776
+  ** GTK_MODULES is set only if at support is enabled
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3777
+  */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3778
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3779
+  if (gconf_client_get_bool(gconf_client_get_default(),
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3780
+			    "/desktop/gnome/interface/accessibility", NULL))
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3781
+    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3782
+      modulesptr = getenv ("GTK_MODULES");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3783
+      if (!modulesptr || modulesptr [0] == '\0')
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3784
+	putenv ("GTK_MODULES=gail:atk-bridge");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3785
+    }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3786
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3787
   while (1)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3788
     {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3789
@@ -1137,6 +1188,17 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3790
             fprintf (stderr, "%s: idle with blanking disabled at %s.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3791
                      blurb(), timestring());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3792
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3793
+          /* 6221109 Changing mode from disable to anything else,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3794
+             doesn't lock screen.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3795
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3796
+             This is Disable Screen Saver mode, in this mode we dont lock
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3797
+             screen, but si->locked_p is already set to True, since someone
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3798
+             tried to lock screen, reset it to False, else when we change
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3799
+             mode from disable and try to lock screen, xscreensaver thinks
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3800
+             screen is already locked and doesnt lock screen anymore.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3801
+           */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3802
+          set_locked_p (si, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3803
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3804
           /* Go around the loop and wait for the next bout of idleness,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3805
              or for the init file to change, or for a remote command to
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3806
              come in, or something.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3807
@@ -1198,6 +1260,7 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3808
                        blurb());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3809
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3810
               schedule_wakeup_event (si, retry, p->debug_p);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3811
+              set_locked_p(si, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3812
               continue;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3813
             }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3814
         }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3815
@@ -1263,7 +1326,17 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3816
             p->lock_p &&                /* and locking is enabled */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3817
             !si->locking_disabled_p &&  /* and locking is possible */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3818
             lock_timeout == 0)          /* and locking is not timer-deferred */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3819
-          set_locked_p (si, True);      /* then lock right now. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3820
+          {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3821
+           if (p->debug_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3822
+             fprintf(stderr, "going to lock screen B\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3823
+           set_locked_p (si, True);      /* then lock right now. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3824
+           ok_to_unblank = unlock_p(si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3825
+           if (ok_to_unblank == True)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3826
+             {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3827
+               set_locked_p (si, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3828
+               goto DONE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3829
+             }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3830
+          }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3831
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3832
         /* locked_p might be true already because of the above, or because of
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3833
            the LOCK ClientMessage.  But if not, and if we're supposed to lock
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3834
@@ -1278,10 +1351,7 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3835
       }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3836
 #endif /* !NO_LOCKING */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3837
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3838
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3839
-      ok_to_unblank = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3840
       do {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3841
-
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3842
         check_for_leaks ("blanked A");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3843
 	sleep_until_idle (si, False);		/* until not idle */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3844
         check_for_leaks ("blanked B");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3845
@@ -1291,6 +1361,13 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3846
 #ifndef NO_LOCKING
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3847
         /* Maybe unlock the screen.
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3848
          */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3849
+        if (si->demoing_p) goto DONE; /* in demoing mode and user wants out
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3850
+                                         unblank screen */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3851
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3852
+        /* This is when blank timeout has happened but lock timeout hasnt
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3853
+           and user gets active.  Simply get him out of the blank screen. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3854
+        if (si->screen_blanked_p && !si->locked_p) goto DONE;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3855
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3856
 	if (si->locked_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3857
 	  {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3858
 	    saver_screen_info *ssi = si->default_screen;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3859
@@ -1302,7 +1379,20 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3860
               suspend_screenhack (&si->screens[i], True);	  /* suspend */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3861
 	    XUndefineCursor (si->dpy, ssi->screensaver_window);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3862
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3863
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3864
+            /* Prevents lock dialog posting on non blanked screen */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3865
+            if (!si->screen_blanked_p)  /* locked_p is true, so blank now */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3866
+              blank_screen (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3867
+            if (si->screen_blanked_p)   /* if blanking successful, call PAM */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3868
+              {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3869
+                set_locked_p (si, True);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3870
+                ok_to_unblank = unlock_p(si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3871
+              }
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3872
+            else /* blanking failed, probably couldn't grab keyboard/mouse */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3873
+              set_locked_p (si, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3874
+#else
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3875
 	    ok_to_unblank = unlock_p (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3876
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3877
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3878
 	    si->dbox_up_p = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3879
 	    XDefineCursor (si->dpy, ssi->screensaver_window, ssi->cursor);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3880
@@ -1327,6 +1417,7 @@ main_loop (saver_info *si)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3881
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3882
 	} while (!ok_to_unblank);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3883
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3884
+DONE:
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3885
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3886
       if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3887
 	fprintf (stderr, "%s: unblanking screen at %s.\n",
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3888
@@ -1411,7 +1502,19 @@ main (int argc, char **argv)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3889
   textdomain (GETTEXT_PACKAGE);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3890
 #endif /* ENABLE_NLS */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3891
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3892
+#if defined(ENABLE_NLS) && defined(HAVE_XSCREENSAVER_LOCK)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3893
+  /* Gtk unlock dialog needs to be sent UTF-8 text to display */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3894
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3895
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3896
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3897
   memset(si, 0, sizeof(*si));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3898
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3899
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3900
+/* Initialize and point si to pw_data i.e. the lock dialog struct */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3901
+  memset(ptr_mygtkpwd, 0, sizeof(*ptr_mygtkpwd));
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3902
+  si->pw_data = ptr_mygtkpwd;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3903
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3904
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3905
   global_si_kludge = si;	/* I hate C so much... */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3906
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3907
   fix_fds();
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3908
@@ -1421,7 +1524,9 @@ main (int argc, char **argv)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3909
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3910
   save_argv (argc, argv);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3911
   set_version_string (si, &argc, argv);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3912
+#ifndef HAVE_XSCREENSAVER_LOCK /* moved below for external lock */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3913
   privileged_initialization (si, &argc, argv);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3914
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3915
   hack_environment (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3916
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3917
   spasswd = getpwuid(getuid());
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3918
@@ -1444,6 +1549,10 @@ main (int argc, char **argv)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3919
   print_banner (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3920
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3921
   load_init_file(si->dpy, p); /* must be before initialize_per_screen_info() */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3922
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3923
+  privileged_initialization (si, &argc, argv);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3924
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3925
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3926
   blurb_timestamp_p = p->timestamp_p;  /* kludge */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3927
   initialize_per_screen_info (si, shell); /* also sets si->fading_possible_p */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3928
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3929
@@ -1695,8 +1804,12 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3930
   Atom type = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3931
   Window window = event->xclient.window;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3932
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3933
+  if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3934
+     fprintf(stderr, "handle_clientmessage\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3935
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3936
   /* Preferences might affect our handling of client messages. */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3937
   maybe_reload_init_file (si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3938
+  XSync (si->dpy, False);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3939
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3940
   if (event->xclient.message_type != XA_SCREENSAVER ||
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3941
       event->xclient.format != 32)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3942
@@ -1969,10 +2082,18 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3943
 			    : "locking.");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3944
 	  sprintf (buf, "LOCK ClientMessage received; %s", response);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3945
 	  clientmessage_response (si, window, False, buf, response);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3946
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3947
+	  if (p->verbose_p)
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3948
+	    fprintf(stderr, "going to lock screen A\n");
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3949
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3950
 	  set_locked_p (si, True);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3951
+	  si->emergency_lock_p = True;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3952
 	  si->selection_mode = 0;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3953
 	  si->demoing_p = False;
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3954
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3955
+	  return True; /* dont set lock_id to 0,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3956
+                          causes to go in lock in main_loop above */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3957
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3958
 	  if (si->lock_id)	/* we're doing it now, so lose the timeout */
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3959
 	    {
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3960
 	      XtRemoveTimeOut (si->lock_id);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3961
diff --git a/driver/xscreensaver.h b/driver/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3962
--- a/driver/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3963
+++ b/driver/xscreensaver.h
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3964
@@ -164,6 +164,12 @@ extern Bool select_visual (saver_screen_info *ssi, const char *visual_name);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3965
 extern void store_saver_status (saver_info *si);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3966
 extern const char *signal_name (int signal);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3967
 
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3968
+#ifdef HAVE_XSCREENSAVER_LOCK
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3969
+extern int kill_job (saver_info *si, pid_t pid, int signal);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3970
+extern struct screenhack_job *make_job (pid_t pid, int screen,
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3971
+                                        const char *cmd);
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3972
+#endif
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3973
+
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3974
 /* =======================================================================
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3975
    subprocs diagnostics
1199f8e91f50 22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  3976
    ======================================================================= */