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

Unified Diff: app/surface/transport_dib_linux.cc

Issue 6665029: Adds a TransportDIB::Id value that is explicitly invalid and use it when compositing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mebbe this one compiles? Created 9 years, 9 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
Index: app/surface/transport_dib_linux.cc
diff --git a/app/surface/transport_dib_linux.cc b/app/surface/transport_dib_linux.cc
index 69fabffca24935b6e74fdb04f5964a175efd6ca8..614cdb02b379c5ef092eec5d33c6c57e26b288d3 100644
--- a/app/surface/transport_dib_linux.cc
+++ b/app/surface/transport_dib_linux.cc
@@ -18,8 +18,7 @@
static void *const kInvalidAddress = (void*) -1;
TransportDIB::TransportDIB()
- : key_(-1),
- address_(kInvalidAddress),
+ : address_(kInvalidAddress),
x_shm_(0),
display_(NULL),
size_(0) {
@@ -59,7 +58,7 @@ TransportDIB* TransportDIB::Create(size_t size, uint32 sequence_num) {
TransportDIB* dib = new TransportDIB;
- dib->key_ = shmkey;
+ dib->key_.shmkey = shmkey;
dib->address_ = address;
dib->size_ = size;
return dib;
@@ -76,15 +75,20 @@ TransportDIB* TransportDIB::Map(Handle handle) {
// static
TransportDIB* TransportDIB::CreateWithHandle(Handle shmkey) {
TransportDIB* dib = new TransportDIB;
- dib->key_ = shmkey;
+ dib->key_.shmkey = shmkey;
return dib;
}
// static
-bool TransportDIB::is_valid(Handle dib) {
+bool TransportDIB::is_valid_handle(Handle dib) {
return dib >= 0;
}
+// static
+bool TransportDIB::is_valid_id(Id id) {
+ return id.shmkey != -1;
+}
+
skia::PlatformCanvas* TransportDIB::GetPlatformCanvas(int w, int h) {
if (address_ == kInvalidAddress && !Map())
return NULL;
@@ -95,16 +99,16 @@ skia::PlatformCanvas* TransportDIB::GetPlatformCanvas(int w, int h) {
}
bool TransportDIB::Map() {
- if (!is_valid(key_))
+ if (!is_valid_id(key_))
return false;
if (address_ != kInvalidAddress)
return true;
struct shmid_ds shmst;
- if (shmctl(key_, IPC_STAT, &shmst) == -1)
+ if (shmctl(key_.shmkey, IPC_STAT, &shmst) == -1)
return false;
- void* address = shmat(key_, NULL /* desired address */, 0 /* flags */);
+ void* address = shmat(key_.shmkey, NULL /* desired address */, 0 /* flags */);
if (address == kInvalidAddress)
return false;
@@ -123,12 +127,12 @@ TransportDIB::Id TransportDIB::id() const {
}
TransportDIB::Handle TransportDIB::handle() const {
- return key_;
+ return key_.shmkey;
}
XID TransportDIB::MapToX(Display* display) {
if (!x_shm_) {
- x_shm_ = ui::AttachSharedMemory(display, key_);
+ x_shm_ = ui::AttachSharedMemory(display, key_.shmkey);
display_ = display;
}

Powered by Google App Engine
This is Rietveld 408576698