| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "ui/surface/accelerated_surface_mac.h" | 5 #include "ui/surface/accelerated_surface_mac.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/mac/scoped_cftyperef.h" | 8 #include "base/mac/scoped_cftyperef.h" |
| 9 #include "ui/gfx/geometry/rect.h" | 9 #include "ui/gfx/geometry/rect.h" |
| 10 #include "ui/gl/gl_bindings.h" | 10 #include "ui/gl/gl_bindings.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 | 109 |
| 110 static void AddBooleanValue(CFMutableDictionaryRef dictionary, | 110 static void AddBooleanValue(CFMutableDictionaryRef dictionary, |
| 111 const CFStringRef key, | 111 const CFStringRef key, |
| 112 bool value) { | 112 bool value) { |
| 113 CFDictionaryAddValue(dictionary, key, | 113 CFDictionaryAddValue(dictionary, key, |
| 114 (value ? kCFBooleanTrue : kCFBooleanFalse)); | 114 (value ? kCFBooleanTrue : kCFBooleanFalse)); |
| 115 } | 115 } |
| 116 | 116 |
| 117 static void AddIntegerValue(CFMutableDictionaryRef dictionary, | 117 static void AddIntegerValue(CFMutableDictionaryRef dictionary, |
| 118 const CFStringRef key, | 118 const CFStringRef key, |
| 119 int32 value) { | 119 int32_t value) { |
| 120 base::ScopedCFTypeRef<CFNumberRef> number( | 120 base::ScopedCFTypeRef<CFNumberRef> number( |
| 121 CFNumberCreate(NULL, kCFNumberSInt32Type, &value)); | 121 CFNumberCreate(NULL, kCFNumberSInt32Type, &value)); |
| 122 CFDictionaryAddValue(dictionary, key, number.get()); | 122 CFDictionaryAddValue(dictionary, key, number.get()); |
| 123 } | 123 } |
| 124 | 124 |
| 125 // Creates a new OpenGL texture object bound to the given texture target. | 125 // Creates a new OpenGL texture object bound to the given texture target. |
| 126 // Caller owns the returned texture. | 126 // Caller owns the returned texture. |
| 127 static GLuint CreateTexture(GLenum target) { | 127 static GLuint CreateTexture(GLenum target) { |
| 128 GLuint texture = 0; | 128 GLuint texture = 0; |
| 129 glGenTextures(1, &texture); | 129 glGenTextures(1, &texture); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 void AcceleratedSurface::Clear(const gfx::Rect& rect) { | 174 void AcceleratedSurface::Clear(const gfx::Rect& rect) { |
| 175 DCHECK(gl_context_->IsCurrent(gl_surface_.get())); | 175 DCHECK(gl_context_->IsCurrent(gl_surface_.get())); |
| 176 glClearColor(0, 0, 0, 0); | 176 glClearColor(0, 0, 0, 0); |
| 177 glViewport(0, 0, rect.width(), rect.height()); | 177 glViewport(0, 0, rect.width(), rect.height()); |
| 178 glMatrixMode(GL_PROJECTION); | 178 glMatrixMode(GL_PROJECTION); |
| 179 glLoadIdentity(); | 179 glLoadIdentity(); |
| 180 glOrtho(0, rect.width(), 0, rect.height(), -1, 1); | 180 glOrtho(0, rect.width(), 0, rect.height(), -1, 1); |
| 181 glClear(GL_COLOR_BUFFER_BIT); | 181 glClear(GL_COLOR_BUFFER_BIT); |
| 182 } | 182 } |
| 183 | 183 |
| 184 uint32 AcceleratedSurface::SetSurfaceSize(const gfx::Size& size) { | 184 uint32_t AcceleratedSurface::SetSurfaceSize(const gfx::Size& size) { |
| 185 if (surface_size_ == size) { | 185 if (surface_size_ == size) { |
| 186 // Return 0 to indicate to the caller that no new backing store | 186 // Return 0 to indicate to the caller that no new backing store |
| 187 // allocation occurred. | 187 // allocation occurred. |
| 188 return 0; | 188 return 0; |
| 189 } | 189 } |
| 190 | 190 |
| 191 // Only support IO surfaces if the GL implementation is the native desktop GL. | 191 // Only support IO surfaces if the GL implementation is the native desktop GL. |
| 192 // IO surfaces will not work with, for example, OSMesa software renderer | 192 // IO surfaces will not work with, for example, OSMesa software renderer |
| 193 // GL contexts. | 193 // GL contexts. |
| 194 if (gfx::GetGLImplementation() != gfx::kGLImplementationDesktopGL) | 194 if (gfx::GetGLImplementation() != gfx::kGLImplementationDesktopGL) |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 // intended to send back a mach port from IOSurfaceCreateMachPort | 254 // intended to send back a mach port from IOSurfaceCreateMachPort |
| 255 // but it looks like Chrome IPC would need to be modified to | 255 // but it looks like Chrome IPC would need to be modified to |
| 256 // properly send mach ports between processes. For the time being we | 256 // properly send mach ports between processes. For the time being we |
| 257 // make our IOSurfaces global and send back their identifiers. On | 257 // make our IOSurfaces global and send back their identifiers. On |
| 258 // the browser process side the identifier is reconstituted into an | 258 // the browser process side the identifier is reconstituted into an |
| 259 // IOSurface for on-screen rendering. | 259 // IOSurface for on-screen rendering. |
| 260 io_surface_id_ = IOSurfaceGetID(io_surface_); | 260 io_surface_id_ = IOSurfaceGetID(io_surface_); |
| 261 return io_surface_id_; | 261 return io_surface_id_; |
| 262 } | 262 } |
| 263 | 263 |
| 264 uint32 AcceleratedSurface::GetSurfaceId() { | 264 uint32_t AcceleratedSurface::GetSurfaceId() { |
| 265 return io_surface_id_; | 265 return io_surface_id_; |
| 266 } | 266 } |
| OLD | NEW |