summaryrefslogtreecommitdiffstats
path: root/chrome/common/x11_util.cc
Commit message (Collapse)AuthorAgeFilesLines
* Linux: use opaque NativeViewIdsagl@chromium.org2009-04-241-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently we are still passing GtkWidget* into the renderer and trusting the value on the way out. With this patch we switch to using opaque values. These opaque values are handled by a GtkNativeViewIdManger, a singleton object which maintains the list of currently valid ids and their current X window ids. We don't pass the X window ids directly to the renderer because they are a) guessable and b) possibly variable for a GtkWidget. From a patch size point of view, the X window isn't current created at the point where we need it so significant work would be needed to reorder operations to fix that as well. This patch also removes the GTK accesses from the BACKGROUND_X11 thread which were a temporary hack. http://codereview.chromium.org/92110 BUG=9014,9869,10787 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14405 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: move X operations from the IO to UI2 thread.agl@chromium.org2009-04-221-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | (r14075 take two) Currently we perform several X operations on the IO thread including geometry and clipboard work. This is causing races inside Xlib and crashing the browser. These are the result of synchronous calls from the renderer, so we cannot route these requests to the UI thread without risking deadlock. Thus we introduce the UI2 thread. This thread has a second connection to the X server and can perform X operations safely the without UI thread. Work remains to be done: Since we still have the hack where we pass GtkWidget pointers into the renderer and back, we still have to access these structures from the IO and UI2 threads. This still needs to be fixed, but this is not the patch for it. Also, not all the X calls from the IO thread have been moved over in this patch; just a few small ones. http://codereview.chromium.org/67145 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14206 0039d316-1c4b-4281-b951-d872f2087c98
* I managed to break test_shell. Reverting. I'll fix tomorrow.agl@chromium.org2009-04-211-30/+0
| | | | | | | Reverts r14075 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14080 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: move X operations from the IO to UI2 thread.agl@chromium.org2009-04-211-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we perform several X operations on the IO thread including geometry and clipboard work. This is causing races inside Xlib and crashing the browser. These are the result of synchronous calls from the renderer, so we cannot route these requests to the UI thread without risking deadlock. Thus we introduce the UI2 thread. This thread has a second connection to the X server and can perform X operations safely the without UI thread. Work remains to be done: Since we still have the hack where we pass GtkWidget pointers into the renderer and back, we still have to access these structures from the IO and UI2 threads. This still needs to be fixed, but this is not the patch for it. Also, not all the X calls from the IO thread have been moved over in this patch; just a few small ones. http://codereview.chromium.org/67145 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14075 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: support displays without Xrender support.agl@chromium.org2009-02-261-3/+35
| | | | | | | | | | | VNC servers don't support Xrender. For this use case, we implement a slow fallback which byte-fiddles the Skia bitmaps as needed to support 32 and 24 bit visuals. Review URL: http://codereview.chromium.org/27227 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10523 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: fix XRENDER support for NXagl@chromium.org2009-02-261-2/+7
| | | | | | | | | | | | | | | The NX X server doesn't support xRGB32 XRENDER picture formats. So, if we don't find one of those formats, fall back on ARGB32, which is fine, except that the X server will spend time dealing with an alpha channel which is all 254 or 255. ARGB32 support is required by the XRENDER spec. (This doesn't fix VNC, a patch for that is forthcoming.) Review URL: http://codereview.chromium.org/28192 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10484 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: fix GDK error when switching tab contentsagl@chromium.org2009-02-261-0/+4
| | | | | | | | | | | | | | When we remove a drawing area from a container, GTK destroys the X window. However, the BackingStore remembers the old X window id and emits X requests using the wrong id. This change makes the window id an argument to ShowRect and makes the pixmaps from the root window instead. Review: http://codereview.chromium.org/27169 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10439 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: switch red and blue channelsagl@chromium.org2009-02-251-2/+2
| | | | | | | Review URL: http://codereview.chromium.org/28135 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10378 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: server side backing storesagl@chromium.org2009-02-251-0/+181
This converts Linux to using server-side backing stores. Rather than keeping a backing store in heap memory in the browser, we create a pixmap in the X server. This means that expose messages don't require us to transport any images to the X server, we can just direct it to paint from the pixmap. Also, scrolling can be performed server side also. This greatly improves performance over remote X. Also, shared memory transport to the X server is implemented. Shared memory segments can be created in the renderer and mapped directly into the X server. Review URL: http://codereview.chromium.org/27147 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10369 0039d316-1c4b-4281-b951-d872f2087c98