Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6466)

Unified Diff: chrome/common/x11_util.h

Issue 67145: Linux: move X operations from the IO to UI2 thread. (Closed)
Patch Set: ... Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/renderer_host/resource_message_filter_win.cc ('k') | chrome/common/x11_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « chrome/browser/renderer_host/resource_message_filter_win.cc ('k') | chrome/common/x11_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698