6769901: popup windows appearing through xscreensaver
authorBarun Kumar Parichha <Barun.Parichha@Sun.COM>
Tue, 10 Feb 2009 23:29:24 -0800
changeset 635 e3fe867814b2
parent 634 0b1a379e1241
child 636 affc84fc2d5f
6769901: popup windows appearing through xscreensaver
open-src/app/xscreensaver/Makefile
open-src/app/xscreensaver/bug-6769901.patch
--- a/open-src/app/xscreensaver/Makefile	Tue Feb 10 16:12:45 2009 -0800
+++ b/open-src/app/xscreensaver/Makefile	Tue Feb 10 23:29:24 2009 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.102	09/02/09
+# @(#)Makefile	1.103	09/02/10
 #
 
 # Package name used in tarballs
@@ -87,7 +87,8 @@
 	bug-6698996.patch \
 	bug-4802301.patch \
 	interference-hack.patch \
-	intltool.patch
+	intltool.patch \
+	bug-6769901.patch
 
 # We patch configure.ac & Makefile.am's so need to autoreconf
 AUTORECONF=yes
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/app/xscreensaver/bug-6769901.patch	Tue Feb 10 23:29:24 2009 -0800
@@ -0,0 +1,40 @@
+--- driver/lock.c-org	Sun Feb  8 23:38:18 2009
++++ driver/lock.c	Sun Feb  8 23:42:07 2009
+@@ -2075,6 +2075,37 @@
+ 	      XtDispatchEvent (&event);
+ 	    }
+ 	}
++        
++	//bugid 6769901: popup windows appearing through xscreensaver
++        //code to stop popup windows while screen is locked
++        //Raise the screen saver window and then the password dialog window
++        if (event.xany.type == VisibilityNotify)
++        {
++  		int screen;
++                for (screen = 0; screen < si->nscreens; screen++)
++                {
++                	if(si->passwd_dialog)
++                        {
++                        	saver_screen_info *ssi = &si->screens[screen];
++                                if(screen==0)
++                                {
++                                	Window screen_win[2] = {
++                                        	si->passwd_dialog,
++                                                ssi->screensaver_window
++					};
++                                        XRestackWindows(si->dpy, screen_win, 2);
++                                        XMapRaised(si->dpy,si->passwd_dialog);
++                                        XFlush(si->dpy);
++                            	}
++                                else
++                                {
++                                	XMapRaised(si->dpy,ssi->screensaver_window);
++                                        XFlush(si->dpy);
++                                }
++        		}
++            	}
++        }
++
+ #else /* !HAVE_XSCREENSAVER_LOCK */
+       if (event.xany.window == si->passwd_dialog && event.xany.type == Expose)
+ 	draw_passwd_window (si);