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

Side by Side Diff: content/browser/gpu/gpu_process_host_ui_shim.cc

Issue 8758017: aura: fix fullscreen pepper flash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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
« no previous file with comments | « no previous file | content/renderer/render_widget_fullscreen_pepper.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "content/browser/gpu/gpu_process_host_ui_shim.h" 5 #include "content/browser/gpu/gpu_process_host_ui_shim.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/id_map.h" 10 #include "base/id_map.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 } 74 }
75 75
76 void Cancel() { cancelled_ = true; } 76 void Cancel() { cancelled_ = true; }
77 77
78 private: 78 private:
79 int host_id_; 79 int host_id_;
80 scoped_ptr<IPC::Message> msg_; 80 scoped_ptr<IPC::Message> msg_;
81 bool cancelled_; 81 bool cancelled_;
82 }; 82 };
83 83
84 RenderWidgetHostView* GetRenderWidgetHostViewFromID(int render_process_id,
85 int render_widget_id) {
86 content::RenderProcessHost* process =
87 content::RenderProcessHost::FromID(render_process_id);
88 if (!process)
89 return NULL;
90
91 RenderWidgetHost* host = static_cast<RenderWidgetHost*>(
92 process->GetListenerByID(render_widget_id));
93 return host ? host->view() : NULL;
94 }
95
84 } // namespace 96 } // namespace
85 97
86 RouteToGpuProcessHostUIShimTask::RouteToGpuProcessHostUIShimTask( 98 RouteToGpuProcessHostUIShimTask::RouteToGpuProcessHostUIShimTask(
87 int host_id, 99 int host_id,
88 const IPC::Message& msg) 100 const IPC::Message& msg)
89 : host_id_(host_id), 101 : host_id_(host_id),
90 msg_(msg) { 102 msg_(msg) {
91 } 103 }
92 104
93 RouteToGpuProcessHostUIShimTask::~RouteToGpuProcessHostUIShimTask() { 105 RouteToGpuProcessHostUIShimTask::~RouteToGpuProcessHostUIShimTask() {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 int32 render_view_id, 235 int32 render_view_id,
224 int32 route_id, 236 int32 route_id,
225 gfx::Size size) { 237 gfx::Size size) {
226 // Always respond even if the window no longer exists. The GPU process cannot 238 // Always respond even if the window no longer exists. The GPU process cannot
227 // make progress on the resizing command buffer until it receives the 239 // make progress on the resizing command buffer until it receives the
228 // response. 240 // response.
229 ScopedSendOnIOThread delayed_send( 241 ScopedSendOnIOThread delayed_send(
230 host_id_, 242 host_id_,
231 new AcceleratedSurfaceMsg_ResizeViewACK(route_id)); 243 new AcceleratedSurfaceMsg_ResizeViewACK(route_id));
232 244
233 RenderViewHost* host = RenderViewHost::FromID(renderer_id, render_view_id); 245 RenderWidgetHostView* view = GetRenderWidgetHostViewFromID(renderer_id,
234 if (!host) 246 render_view_id);
235 return;
236
237 RenderWidgetHostView* view = host->view();
238 if (!view) 247 if (!view)
239 return; 248 return;
240 249
241 gfx::PluginWindowHandle handle = view->GetCompositingSurface(); 250 gfx::PluginWindowHandle handle = view->GetCompositingSurface();
242 251
243 // Resize the window synchronously. The GPU process must not issue GL 252 // Resize the window synchronously. The GPU process must not issue GL
244 // calls on the command buffer until the window is the size it expects it 253 // calls on the command buffer until the window is the size it expects it
245 // to be. 254 // to be.
246 #if defined(TOOLKIT_USES_GTK) 255 #if defined(TOOLKIT_USES_GTK)
247 GdkWindow* window = reinterpret_cast<GdkWindow*>( 256 GdkWindow* window = reinterpret_cast<GdkWindow*>(
(...skipping 22 matching lines...) Expand all
270 279
271 void GpuProcessHostUIShim::OnAcceleratedSurfaceNew( 280 void GpuProcessHostUIShim::OnAcceleratedSurfaceNew(
272 const GpuHostMsg_AcceleratedSurfaceNew_Params& params) { 281 const GpuHostMsg_AcceleratedSurfaceNew_Params& params) {
273 ScopedSendOnIOThread delayed_send( 282 ScopedSendOnIOThread delayed_send(
274 host_id_, 283 host_id_,
275 new AcceleratedSurfaceMsg_NewACK( 284 new AcceleratedSurfaceMsg_NewACK(
276 params.route_id, 285 params.route_id,
277 params.surface_id, 286 params.surface_id,
278 TransportDIB::DefaultHandleValue())); 287 TransportDIB::DefaultHandleValue()));
279 288
280 RenderViewHost* host = RenderViewHost::FromID(params.renderer_id, 289 RenderWidgetHostView* view = GetRenderWidgetHostViewFromID(
281 params.render_view_id); 290 params.renderer_id, params.render_view_id);
282 if (!host)
283 return;
284
285 RenderWidgetHostView* view = host->view();
286 if (!view) 291 if (!view)
287 return; 292 return;
288 293
289 uint64 surface_id = params.surface_id; 294 uint64 surface_id = params.surface_id;
290 TransportDIB::Handle surface_handle = TransportDIB::DefaultHandleValue(); 295 TransportDIB::Handle surface_handle = TransportDIB::DefaultHandleValue();
291 296
292 #if defined(OS_MACOSX) 297 #if defined(OS_MACOSX)
293 if (params.create_transport_dib) { 298 if (params.create_transport_dib) {
294 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); 299 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
295 if (shared_memory->CreateAnonymous(params.width * params.height * 4)) { 300 if (shared_memory->CreateAnonymous(params.width * params.height * 4)) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 334
330 void GpuProcessHostUIShim::OnAcceleratedSurfaceBuffersSwapped( 335 void GpuProcessHostUIShim::OnAcceleratedSurfaceBuffersSwapped(
331 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params) { 336 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params) {
332 TRACE_EVENT0("renderer", 337 TRACE_EVENT0("renderer",
333 "GpuProcessHostUIShim::OnAcceleratedSurfaceBuffersSwapped"); 338 "GpuProcessHostUIShim::OnAcceleratedSurfaceBuffersSwapped");
334 339
335 ScopedSendOnIOThread delayed_send( 340 ScopedSendOnIOThread delayed_send(
336 host_id_, 341 host_id_,
337 new AcceleratedSurfaceMsg_BuffersSwappedACK(params.route_id)); 342 new AcceleratedSurfaceMsg_BuffersSwappedACK(params.route_id));
338 343
339 RenderViewHost* host = RenderViewHost::FromID(params.renderer_id, 344 RenderWidgetHostView* view = GetRenderWidgetHostViewFromID(
340 params.render_view_id); 345 params.renderer_id, params.render_view_id);
341 if (!host)
342 return;
343
344 RenderWidgetHostView* view = host->view();
345 if (!view) 346 if (!view)
346 return; 347 return;
347 348
348 delayed_send.Cancel(); 349 delayed_send.Cancel();
349 350
350 // View must send ACK message after next composite. 351 // View must send ACK message after next composite.
351 view->AcceleratedSurfaceBuffersSwapped(params, host_id_); 352 view->AcceleratedSurfaceBuffersSwapped(params, host_id_);
352 } 353 }
353 354
354 void GpuProcessHostUIShim::OnAcceleratedSurfacePostSubBuffer( 355 void GpuProcessHostUIShim::OnAcceleratedSurfacePostSubBuffer(
355 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params) { 356 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params) {
356 TRACE_EVENT0("renderer", 357 TRACE_EVENT0("renderer",
357 "GpuProcessHostUIShim::OnAcceleratedSurfacePostSubBuffer"); 358 "GpuProcessHostUIShim::OnAcceleratedSurfacePostSubBuffer");
358 359
359 ScopedSendOnIOThread delayed_send( 360 ScopedSendOnIOThread delayed_send(
360 host_id_, 361 host_id_,
361 new AcceleratedSurfaceMsg_PostSubBufferACK(params.route_id)); 362 new AcceleratedSurfaceMsg_PostSubBufferACK(params.route_id));
362 363
363 RenderViewHost* host = RenderViewHost::FromID(params.renderer_id, 364 RenderWidgetHostView* view = GetRenderWidgetHostViewFromID(
364 params.render_view_id); 365 params.renderer_id, params.render_view_id);
365 if (!host)
366 return;
367
368 RenderWidgetHostView* view = host->view();
369 if (!view) 366 if (!view)
370 return; 367 return;
371 368
372 delayed_send.Cancel(); 369 delayed_send.Cancel();
373 370
374 // View must send ACK message after next composite. 371 // View must send ACK message after next composite.
375 view->AcceleratedSurfacePostSubBuffer(params, host_id_); 372 view->AcceleratedSurfacePostSubBuffer(params, host_id_);
376 } 373 }
377 374
378 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) 375 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
379 376
380 void GpuProcessHostUIShim::OnAcceleratedSurfaceRelease( 377 void GpuProcessHostUIShim::OnAcceleratedSurfaceRelease(
381 const GpuHostMsg_AcceleratedSurfaceRelease_Params& params) { 378 const GpuHostMsg_AcceleratedSurfaceRelease_Params& params) {
382 RenderViewHost* host = RenderViewHost::FromID(params.renderer_id, 379 RenderWidgetHostView* view = GetRenderWidgetHostViewFromID(
383 params.render_view_id); 380 params.renderer_id, params.render_view_id);
384 if (!host)
385 return;
386 RenderWidgetHostView* view = host->view();
387 if (!view) 381 if (!view)
388 return; 382 return;
389 view->AcceleratedSurfaceRelease(params.identifier); 383 view->AcceleratedSurfaceRelease(params.identifier);
390 } 384 }
391 385
392 #endif 386 #endif
OLDNEW
« no previous file with comments | « no previous file | content/renderer/render_widget_fullscreen_pepper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698