changeset 27885:9829cfa41d6d

Replace some of the different inconsistent XGetGeometry uses by a vo_x11_update_geometry function.
author reimar
date Sat, 15 Nov 2008 17:45:55 +0000
parents ad43c827bf24
children e38ae03895c9
files libvo/gl_common.c libvo/vo_x11.c libvo/vo_xv.c libvo/x11_common.c libvo/x11_common.h
diffstat 5 files changed, 21 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/gl_common.c	Sat Nov 15 17:41:30 2008 +0000
+++ b/libvo/gl_common.c	Sat Nov 15 17:45:55 2008 +0000
@@ -1607,13 +1607,7 @@
 
   // set new values
   vo_window = win;
-  {
-    Window root;
-    int tmp;
-    unsigned utmp;
-    XGetGeometry(mDisplay, vo_window, &root, &tmp, &tmp,
-        (unsigned *)&vo_dwidth, (unsigned *)&vo_dheight, &utmp, &utmp);
-  }
+  vo_x11_update_geometry();
   if (!keep_context) {
     void *(*getProcAddress)(const GLubyte *);
     const char *(*glXExtStr)(Display *, int);
--- a/libvo/vo_x11.c	Sat Nov 15 17:41:30 2008 +0000
+++ b/libvo/vo_x11.c	Sat Nov 15 17:45:55 2008 +0000
@@ -430,9 +430,7 @@
                                            ButtonReleaseMask |
                                            ExposureMask);
                 XMapWindow(mDisplay, vo_window);
-                XGetGeometry(mDisplay, vo_window, &mRootWin,
-                             &vo_dx, &vo_dy, &vo_dwidth, &vo_dheight,
-                             &border, &depth);
+                depth = vo_x11_update_geometry();
             } else
                 XSelectInput(mDisplay, vo_window, ExposureMask);
         } else
--- a/libvo/vo_xv.c	Sat Nov 15 17:41:30 2008 +0000
+++ b/libvo/vo_xv.c	Sat Nov 15 17:45:55 2008 +0000
@@ -290,11 +290,7 @@
                                            ButtonReleaseMask |
                                            ExposureMask);
                 XMapWindow(mDisplay, vo_window);
-                XGetGeometry(mDisplay, vo_window, &mRoot,
-                             &drwX, &drwY, &vo_dwidth, &vo_dheight,
-                             &drwBorderWidth, &drwDepth);
-                if (vo_dwidth <= 0) vo_dwidth = d_width;
-                if (vo_dheight <= 0) vo_dheight = d_height;
+                vo_x11_update_geometry();
                 aspect_save_prescale(vo_dwidth, vo_dheight);
             }
         } else
--- a/libvo/x11_common.c	Sat Nov 15 17:41:30 2008 +0000
+++ b/libvo/x11_common.c	Sat Nov 15 17:45:55 2008 +0000
@@ -1040,25 +1040,7 @@
 //         if (vo_fs && Event.xconfigure.width != vo_screenwidth && Event.xconfigure.height != vo_screenheight) break;
                 if (vo_window == None)
                     break;
-                vo_dwidth = Event.xconfigure.width;
-                vo_dheight = Event.xconfigure.height;
-#if 0
-                /* when resizing, x and y are zero :( */
-                vo_dx = Event.xconfigure.x;
-                vo_dy = Event.xconfigure.y;
-#else
-                {
-                    Window root;
-                    int foo;
-                    Window win;
-
-                    XGetGeometry(mydisplay, vo_window, &root, &foo, &foo,
-                                 &foo /*width */ , &foo /*height */ , &foo,
-                                 &foo);
-                    XTranslateCoordinates(mydisplay, vo_window, root, 0, 0,
-                                          &vo_dx, &vo_dy, &win);
-                }
-#endif
+                vo_x11_update_geometry();
                 ret |= VO_EVENT_RESIZE;
                 break;
             case KeyPress:
@@ -1496,6 +1478,22 @@
     return type;
 }
 
+/**
+ * \brief update vo_dx, vo_dy, vo_dwidth and vo_dheight with current values of vo_window
+ * \return returns current color depth of vo_window
+ */
+int vo_x11_update_geometry(void) {
+    unsigned depth, w, h;
+    int dummy_int;
+    Window dummy_win;
+    XGetGeometry(mDisplay, vo_window, &dummy_win, &dummy_int, &dummy_int,
+                 &w, &h, &dummy_int, &depth);
+    if (w <= INT_MAX && h <= INT_MAX) { vo_dwidth = w; vo_dheight = h; }
+    XTranslateCoordinates(mDisplay, vo_window, mRootWin, 0, 0, &vo_dx, &vo_dy,
+                          &dummy_win);
+    return depth <= INT_MAX ? depth : 0;
+}
+
 void vo_x11_fullscreen(void)
 {
     int x, y, w, h;
--- a/libvo/x11_common.h	Sat Nov 15 17:41:30 2008 +0000
+++ b/libvo/x11_common.h	Sat Nov 15 17:45:55 2008 +0000
@@ -50,6 +50,7 @@
 extern void vo_x11_sizehint( int x, int y, int width, int height, int max );
 extern int vo_x11_check_events(Display *mydisplay);
 extern void vo_x11_selectinput_witherr(Display *display, Window w, long event_mask);
+int vo_x11_update_geometry(void);
 extern void vo_x11_fullscreen( void );
 extern void vo_x11_setlayer( Display * mDisplay,Window vo_window,int layer );
 extern void vo_x11_uninit(void);