Index: chrome/common/x11_util.h |
diff --git a/chrome/common/x11_util.h b/chrome/common/x11_util.h |
index 4800a69d759408d8f04f1c9c188a6cd98b1a51ee..aef133fc893d51afab5fee0080124cbe69511c1c 100644 |
--- a/chrome/common/x11_util.h |
+++ b/chrome/common/x11_util.h |
@@ -11,48 +11,75 @@ |
// we use a void* for Visual*). The Xlib headers are highly polluting so we try |
// hard to limit their spread into the rest of the code. |
+typedef struct _GdkDrawable GdkWindow; |
typedef struct _GtkWidget GtkWidget; |
typedef unsigned long XID; |
typedef struct _XDisplay Display; |
+namespace base { |
+class Thread; |
+} |
+ |
namespace gfx { |
class Size; |
} |
namespace x11_util { |
- // These functions cache their results and must be called from the UI thread. |
- // Currently they don't support multiple screens/displays. |
- |
- // Return an X11 connection for the current, primary display. |
- Display* GetXDisplay(); |
- // Return true iff the connection supports X shared memory |
- bool QuerySharedMemorySupport(Display* dpy); |
- // Return true iff the display supports Xrender |
- bool QueryRenderSupport(Display* dpy); |
- |
- // These functions do not cache their results |
- |
- // Get the X window id for the default root window |
- XID GetX11RootWindow(); |
- // Get the X window id for the given GTK widget. |
- XID GetX11WindowFromGtkWidget(GtkWidget*); |
- // Get a Visual from the given widget. Since we don't include the Xlib |
- // headers, this is returned as a void*. |
- void* GetVisualFromGtkWidget(GtkWidget*); |
- // Return the number of bits-per-pixel for a pixmap of the given depth |
- int BitsPerPixelForPixmapDepth(Display*, int depth); |
- |
- // Return a handle to a server side pixmap. |shared_memory_key| is a SysV |
- // IPC key. The shared memory region must contain 32-bit pixels. |
- XID AttachSharedMemory(Display* display, int shared_memory_support); |
- void DetachSharedMemory(Display* display, XID shmseg); |
- |
- // Return a handle to an XRender picture where |pixmap| is a handle to a |
- // pixmap containing Skia ARGB data. |
- XID CreatePictureFromSkiaPixmap(Display* display, XID pixmap); |
- |
- void FreePicture(Display* display, XID picture); |
- void FreePixmap(Display* display, XID pixmap); |
-}; |
+ |
+// These functions use the GDK default display and this /must/ be called from |
+// the UI thread. Thus, they don't support multiple displays. |
+ |
+// These functions cache their results. |
+ |
+// Return an X11 connection for the current, primary display. |
+Display* GetXDisplay(); |
+// Return true iff the connection supports X shared memory |
+bool QuerySharedMemorySupport(Display* dpy); |
+// Return true iff the display supports Xrender |
+bool QueryRenderSupport(Display* dpy); |
+// Return the default screen number for the display |
+int GetDefaultScreen(Display* display); |
+ |
+// These functions do not cache their results |
+ |
+// Get the X window id for the default root window |
+XID GetX11RootWindow(); |
+// Get the X window id for the given GTK widget. |
+XID GetX11WindowFromGtkWidget(GtkWidget*); |
+XID GetX11WindowFromGdkWindow(GdkWindow*); |
+// Get a Visual from the given widget. Since we don't include the Xlib |
+// headers, this is returned as a void*. |
+void* GetVisualFromGtkWidget(GtkWidget*); |
+// Return the number of bits-per-pixel for a pixmap of the given depth |
+int BitsPerPixelForPixmapDepth(Display*, int depth); |
+ |
+// Return a handle to a server side pixmap. |shared_memory_key| is a SysV |
+// IPC key. The shared memory region must contain 32-bit pixels. |
+XID AttachSharedMemory(Display* display, int shared_memory_support); |
+void DetachSharedMemory(Display* display, XID shmseg); |
+ |
+// Return a handle to an XRender picture where |pixmap| is a handle to a |
+// pixmap containing Skia ARGB data. |
+XID CreatePictureFromSkiaPixmap(Display* display, XID pixmap); |
+ |
+void FreePicture(Display* display, XID picture); |
+void FreePixmap(Display* display, XID pixmap); |
+ |
+// These functions are for performing X opertions outside of the UI thread. |
+ |
+// Return the Display for the secondary X connection. We keep a second |
+// connection around for making X requests outside of the UI thread. |
+// This function may only be called from the BACKGROUND_X11 thread. |
+Display* GetSecondaryDisplay(); |
+ |
+// Since one cannot include both WebKit header and Xlib headers in the same |
+// file (due to collisions), we wrap all the Xlib functions that we need here. |
+// These functions must be called on the BACKGROUND_X11 thread since they |
+// reference GetSecondaryDisplay(). |
+ |
+void GetWindowGeometry(int* x, int* y, unsigned* width, unsigned* height, |
+ XID window); |
+ |
+} // namespace x11_util |
#endif // CHROME_COMMON_X11_UTIL_H_ |