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

Side by Side Diff: chrome/browser/renderer_host/backing_store.h

Issue 27227: Linux: support displays without Xrender support. (Closed)
Patch Set: ... Created 11 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/renderer_host/backing_store_x.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_ 5 #ifndef CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_
6 #define CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_ 6 #define CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/gfx/rect.h" 9 #include "base/gfx/rect.h"
10 #include "base/gfx/size.h" 10 #include "base/gfx/size.h"
(...skipping 19 matching lines...) Expand all
30 public: 30 public:
31 #if defined(OS_WIN) || defined(OS_MACOSX) 31 #if defined(OS_WIN) || defined(OS_MACOSX)
32 explicit BackingStore(const gfx::Size& size); 32 explicit BackingStore(const gfx::Size& size);
33 #elif defined(OS_LINUX) 33 #elif defined(OS_LINUX)
34 // Create a backing store on the X server. 34 // Create a backing store on the X server.
35 // size: the size of the server-side pixmap 35 // size: the size of the server-side pixmap
36 // x_connection: the display to target 36 // x_connection: the display to target
37 // depth: the depth of the X window which will be drawn into 37 // depth: the depth of the X window which will be drawn into
38 // visual: An Xlib Visual describing the format of the target window 38 // visual: An Xlib Visual describing the format of the target window
39 // root_window: The X id of the root window 39 // root_window: The X id of the root window
40 // use_render: if true, the X server supports Xrender
40 // use_shared_memory: if true, the X server is local 41 // use_shared_memory: if true, the X server is local
41 BackingStore(const gfx::Size& size, Display* x_connection, int depth, 42 BackingStore(const gfx::Size& size, Display* x_connection, int depth,
42 void* visual, XID root_window, bool use_shared_memory); 43 void* visual, XID root_window, bool use_render,
44 bool use_shared_memory);
43 // This is for unittesting only. An object constructed using this constructor 45 // This is for unittesting only. An object constructed using this constructor
44 // will silently ignore all paints 46 // will silently ignore all paints
45 explicit BackingStore(const gfx::Size& size); 47 explicit BackingStore(const gfx::Size& size);
46 #endif 48 #endif
47 ~BackingStore(); 49 ~BackingStore();
48 50
49 const gfx::Size& size() { return size_; } 51 const gfx::Size& size() { return size_; }
50 52
51 #if defined(OS_WIN) 53 #if defined(OS_WIN)
52 HDC hdc() { return hdc_; } 54 HDC hdc() { return hdc_; }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 HDC hdc_; 93 HDC hdc_;
92 94
93 // Handle to the backing store dib. 95 // Handle to the backing store dib.
94 HANDLE backing_store_dib_; 96 HANDLE backing_store_dib_;
95 97
96 // Handle to the original bitmap in the dc. 98 // Handle to the original bitmap in the dc.
97 HANDLE original_bitmap_; 99 HANDLE original_bitmap_;
98 #elif defined(OS_MACOSX) 100 #elif defined(OS_MACOSX)
99 skia::PlatformCanvas canvas_; 101 skia::PlatformCanvas canvas_;
100 #elif defined(OS_LINUX) 102 #elif defined(OS_LINUX)
103 // Paints the bitmap from the renderer onto the backing store without
104 // using Xrender to composite the pixmaps.
105 void PaintRectWithoutXrender(TransportDIB* bitmap,
106 const gfx::Rect& bitmap_rect);
107
101 // This is the connection to the X server where this backing store will be 108 // This is the connection to the X server where this backing store will be
102 // displayed. 109 // displayed.
103 Display *const display_; 110 Display *const display_;
104 // If this is true, then |connection_| is good for MIT-SHM (X shared memory). 111 // If this is true, then |connection_| is good for MIT-SHM (X shared memory).
105 const bool use_shared_memory_; 112 const bool use_shared_memory_;
113 // If this is true, then we can use Xrender to composite our pixmaps.
114 const bool use_render_;
115 // If |use_render_| is false, this is the number of bits-per-pixel for |depth|
116 int pixmap_bpp_;
117 // This is the depth of the target window.
118 const int visual_depth_;
106 // The parent window (probably a GtkDrawingArea) for this backing store. 119 // The parent window (probably a GtkDrawingArea) for this backing store.
107 const XID root_window_; 120 const XID root_window_;
108 // This is a handle to the server side pixmap which is our backing store. 121 // This is a handle to the server side pixmap which is our backing store.
109 XID pixmap_; 122 XID pixmap_;
110 // This is the RENDER picture pointing at |pixmap_|. 123 // This is the RENDER picture pointing at |pixmap_|.
111 XID picture_; 124 XID picture_;
112 // This is a default graphic context, used in XCopyArea 125 // This is a default graphic context, used in XCopyArea
113 void* pixmap_gc_; 126 void* pixmap_gc_;
114 #endif 127 #endif
115 128
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 static void RemoveBackingStore(RenderWidgetHost* host); 175 static void RemoveBackingStore(RenderWidgetHost* host);
163 176
164 private: 177 private:
165 // Not intended for instantiation. 178 // Not intended for instantiation.
166 BackingStoreManager() {} 179 BackingStoreManager() {}
167 180
168 DISALLOW_COPY_AND_ASSIGN(BackingStoreManager); 181 DISALLOW_COPY_AND_ASSIGN(BackingStoreManager);
169 }; 182 };
170 183
171 #endif // CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_ 184 #endif // CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/renderer_host/backing_store_x.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698