Index: ui/surface/transport_dib_posix.cc |
diff --git a/ui/surface/transport_dib_posix.cc b/ui/surface/transport_dib_posix.cc |
index 284ed33034dfc0145d4e9dbfc3527a5e57f3c564..e26fdb2d7c6e4a93c6932e071616ce5eae68f5a4 100644 |
--- a/ui/surface/transport_dib_posix.cc |
+++ b/ui/surface/transport_dib_posix.cc |
@@ -51,7 +51,7 @@ TransportDIB* TransportDIB::CreateWithHandle(Handle handle) { |
// static |
bool TransportDIB::is_valid_handle(Handle dib) { |
- return dib.fd >= 0; |
+ return base::SharedMemory::IsHandleValid(dib); |
} |
// static |
@@ -66,7 +66,7 @@ bool TransportDIB::is_valid_id(Id id) { |
skia::PlatformCanvas* TransportDIB::GetPlatformCanvas(int w, int h) { |
if ((!memory() && !Map()) || !VerifyCanvasSize(w, h)) |
return NULL; |
- return skia::CreatePlatformCanvas(w, h, true, |
+ return skia::CreatePlatformCanvas(w, h, true, |
reinterpret_cast<uint8_t*>(memory()), |
skia::RETURN_NULL_ON_FAILURE); |
} |
@@ -82,13 +82,12 @@ bool TransportDIB::Map() { |
if (memory()) |
return true; |
- struct stat st; |
- if ((fstat(shared_memory_.handle().fd, &st) != 0) || |
- (!shared_memory_.Map(st.st_size))) { |
+ int size = base::SharedMemory::GetSizeFromSharedMemoryHandle( |
+ shared_memory_.handle()); |
+ if (size == -1 || !shared_memory_.Map(size)) |
return false; |
- } |
- size_ = st.st_size; |
+ size_ = size; |
#endif |
return true; |
} |