patches/gnome-desktop-02-xrandr-probing.diff
author rohinis
Tue, 29 Nov 2011 17:32:55 +0000
branchs11express-2010-11
changeset 22234 c23e64da3e06
parent 17683 b4b88b042273
permissions -rw-r--r--
2011-11-29 Rohini S <[email protected]> * patches/Python26-22-audio.diff: Fixes CVE-2010-1634 * specs/SUNWPython26.spec: Fixes CR 7085446
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17683
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     1
--- gnome-desktop-2.26.1/libgnome-desktop/gnome-rr.c.ori	2009-04-15 05:28:28.927718257 +0100
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     2
+++ gnome-desktop-2.26.1/libgnome-desktop/gnome-rr.c	2009-04-15 05:34:06.962714756 +0100
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     3
@@ -432,9 +432,34 @@
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     4
 static ScreenInfo *
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     5
 screen_info_new (GnomeRRScreen *screen, gboolean needs_reprobe, GError **error)
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     6
 {
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     7
-    ScreenInfo *info = g_new0 (ScreenInfo, 1);
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     8
-    
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
     9
+    GTimeVal   cur_time_val;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    10
+    gint64     cur, prev;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    11
+ 
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    12
     g_assert (screen != NULL);
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    13
+
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    14
+    if ( screen->info != NULL ) {
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    15
+        g_get_current_time(&cur_time_val);
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    16
+        cur = (gint64) cur_time_val.tv_sec * G_USEC_PER_SEC + cur_time_val.tv_usec;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    17
+        prev =(gint64) screen->last_update_time.tv_sec * G_USEC_PER_SEC + screen->last_update_time.tv_usec;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    18
+
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    19
+        /* Only referesh the info after 2 seconds have elapsed since last
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    20
+         * update, otherwise it will cause a lot of extra probing on the X
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    21
+         * server.
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    22
+         */
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    23
+        if (((cur - prev) < 0) || ((cur - prev) > 2000000)) {
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    24
+            screen->last_update_time = cur_time_val;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    25
+        }
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    26
+        else {
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    27
+            /* Don't return any update, which should result in caller using
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    28
+             * existing data
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    29
+             */
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    30
+            g_warning("Call to screen_info_new is too frequent, skipping...");
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    31
+            return( NULL );
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    32
+        }
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    33
+    }
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    34
+
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    35
+    ScreenInfo *info = g_new0 (ScreenInfo, 1);
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    36
+
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    37
     
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    38
     info->outputs = NULL;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    39
     info->crtcs = NULL;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    40
diff -ruN gnome-desktop-2.29.92.orig/libgnome-desktop/gnome-rr-private.h gnome-desktop-2.29.92/libgnome-desktop/gnome-rr-private.h
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    41
--- gnome-desktop-2.29.92.orig/libgnome-desktop/gnome-rr-private.h	2010-03-11 22:12:45.452630032 +0000
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    42
+++ gnome-desktop-2.29.92/libgnome-desktop/gnome-rr-private.h	2010-03-11 22:13:28.367005972 +0000
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    43
@@ -42,7 +42,7 @@
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    44
     
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    45
     GnomeRRScreenChanged	callback;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    46
     gpointer			data;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    47
-
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    48
+    GTimeVal                    last_update_time;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    49
     Atom                        connector_type_atom;
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    50
 };
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    51
 
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    52
diff -ruN gnome-desktop-2.29.92.orig/libgnome-desktop/gnome-rr.c gnome-desktop-2.29.92/libgnome-desktop/gnome-rr.c
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    53
--- gnome-desktop-2.29.92.orig/libgnome-desktop/gnome-rr.c	2010-03-11 22:15:24.569673576 +0000
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    54
+++ gnome-desktop-2.29.92/libgnome-desktop/gnome-rr.c	2010-03-11 22:18:41.223085776 +0000
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    55
@@ -713,6 +713,9 @@
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    56
 	}
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    57
 
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    58
 	screen->info = screen_info_new (screen, TRUE, error);
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    59
+
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    60
+        /* Initialize the last udpate time */
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    61
+        g_get_current_time (&(screen->last_update_time));
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    62
 	
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    63
 	if (!screen->info) {
b4b88b042273 2010-03-11 Christian Kelly <[email protected]>
chrisk
parents:
diff changeset
    64
 	    g_free (screen);