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

Side by Side Diff: chrome/plugin/webplugin_accelerated_surface_proxy_mac.cc

Issue 6672048: Move plugin code to content. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import <OpenGL/OpenGL.h>
6
7 #include "chrome/plugin/webplugin_accelerated_surface_proxy_mac.h"
8
9 #include "app/surface/accelerated_surface_mac.h"
10 #include "app/surface/transport_dib.h"
11 #include "chrome/plugin/webplugin_proxy.h"
12
13 WebPluginAcceleratedSurfaceProxy::WebPluginAcceleratedSurfaceProxy(
14 WebPluginProxy* plugin_proxy)
15 : plugin_proxy_(plugin_proxy),
16 window_handle_(NULL) {
17 surface_ = new AcceleratedSurface;
18 // It's possible for OpenGL to fail to initialze (e.g., if an incompatible
19 // mode is forced via flags), so handle that gracefully.
20 if (!surface_->Initialize(NULL, true)) {
21 delete surface_;
22 surface_ = NULL;
23 return;
24 }
25
26 // Only used for 10.5 support, but harmless on 10.6+.
27 surface_->SetTransportDIBAllocAndFree(
28 NewCallback(plugin_proxy_, &WebPluginProxy::AllocSurfaceDIB),
29 NewCallback(plugin_proxy_, &WebPluginProxy::FreeSurfaceDIB));
30 }
31
32 WebPluginAcceleratedSurfaceProxy::~WebPluginAcceleratedSurfaceProxy() {
33 if (surface_) {
34 surface_->Destroy();
35 delete surface_;
36 surface_ = NULL;
37 }
38 }
39
40 void WebPluginAcceleratedSurfaceProxy::SetWindowHandle(
41 gfx::PluginWindowHandle window) {
42 window_handle_ = window;
43 }
44
45 void WebPluginAcceleratedSurfaceProxy::SetSize(const gfx::Size& size) {
46 if (!surface_)
47 return;
48
49 uint64 io_surface_id = surface_->SetSurfaceSize(size);
50 if (io_surface_id) {
51 plugin_proxy_->SetAcceleratedSurface(window_handle_, size, io_surface_id);
52 } else {
53 TransportDIB::Handle transport_dib = surface_->SetTransportDIBSize(size);
54 if (TransportDIB::is_valid(transport_dib)) {
55 plugin_proxy_->SetAcceleratedDIB(window_handle_, size, transport_dib);
56 }
57 }
58 }
59
60 CGLContextObj WebPluginAcceleratedSurfaceProxy::context() {
61 return surface_ ? surface_->context() : NULL;
62 }
63
64 void WebPluginAcceleratedSurfaceProxy::StartDrawing() {
65 if (!surface_)
66 return;
67
68 surface_->MakeCurrent();
69 surface_->Clear(gfx::Rect(surface_->GetSize()));
70 }
71
72 void WebPluginAcceleratedSurfaceProxy::EndDrawing() {
73 if (!surface_)
74 return;
75
76 surface_->SwapBuffers();
77 plugin_proxy_->AcceleratedFrameBuffersDidSwap(
78 window_handle_, surface_->GetSurfaceId());
79 }
OLDNEW
« no previous file with comments | « chrome/plugin/webplugin_accelerated_surface_proxy_mac.h ('k') | chrome/plugin/webplugin_delegate_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698