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 "content/browser/renderer_host/render_widget_host_view_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/browser/renderer_host/backing_store_skia.h" | 8 #include "content/browser/renderer_host/backing_store_skia.h" |
9 #include "content/browser/renderer_host/render_widget_host.h" | 9 #include "content/browser/renderer_host/render_widget_host.h" |
10 #include "content/browser/renderer_host/web_input_event_aura.h" | 10 #include "content/browser/renderer_host/web_input_event_aura.h" |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 } else { | 339 } else { |
340 window_->layer()->SetExternalTexture(NULL); | 340 window_->layer()->SetExternalTexture(NULL); |
341 } | 341 } |
342 #endif | 342 #endif |
343 } | 343 } |
344 | 344 |
345 void RenderWidgetHostViewAura::AcceleratedSurfaceBuffersSwapped( | 345 void RenderWidgetHostViewAura::AcceleratedSurfaceBuffersSwapped( |
346 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params, | 346 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params, |
347 int gpu_host_id) { | 347 int gpu_host_id) { |
348 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) | 348 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) |
349 current_surface_ = params.surface_id; | 349 current_surface_ = params.surface_handle; |
350 UpdateExternalTexture(); | 350 UpdateExternalTexture(); |
351 | 351 |
352 if (!window_->layer()->GetCompositor()) { | 352 if (!window_->layer()->GetCompositor()) { |
353 // We have no compositor, so we have no way to display the surface. | 353 // We have no compositor, so we have no way to display the surface. |
354 // Must still send the ACK. | 354 // Must still send the ACK. |
355 RenderWidgetHost::AcknowledgeSwapBuffers(params.route_id, gpu_host_id); | 355 RenderWidgetHost::AcknowledgeSwapBuffers(params.route_id, gpu_host_id); |
356 } else { | 356 } else { |
357 gfx::Size surface_size = | 357 gfx::Size surface_size = |
358 accelerated_surface_containers_[params.surface_id]->GetSize(); | 358 accelerated_surface_containers_[params.surface_handle]->GetSize(); |
359 window_->SchedulePaintInRect(gfx::Rect(surface_size)); | 359 window_->SchedulePaintInRect(gfx::Rect(surface_size)); |
360 | 360 |
361 // Add sending an ACK to the list of things to do OnCompositingEnded | 361 // Add sending an ACK to the list of things to do OnCompositingEnded |
362 on_compositing_ended_callbacks_.push_back( | 362 on_compositing_ended_callbacks_.push_back( |
363 base::Bind(&RenderWidgetHost::AcknowledgeSwapBuffers, | 363 base::Bind(&RenderWidgetHost::AcknowledgeSwapBuffers, |
364 params.route_id, gpu_host_id)); | 364 params.route_id, gpu_host_id)); |
365 ui::Compositor* compositor = window_->layer()->GetCompositor(); | 365 ui::Compositor* compositor = window_->layer()->GetCompositor(); |
366 if (!compositor->HasObserver(this)) | 366 if (!compositor->HasObserver(this)) |
367 compositor->AddObserver(this); | 367 compositor->AddObserver(this); |
368 } | 368 } |
369 #else | 369 #else |
370 NOTREACHED(); | 370 NOTREACHED(); |
371 #endif | 371 #endif |
372 } | 372 } |
373 | 373 |
374 void RenderWidgetHostViewAura::AcceleratedSurfacePostSubBuffer( | 374 void RenderWidgetHostViewAura::AcceleratedSurfacePostSubBuffer( |
375 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, | 375 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, |
376 int gpu_host_id) { | 376 int gpu_host_id) { |
377 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) | 377 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) |
378 current_surface_ = params.surface_id; | 378 current_surface_ = params.surface_handle; |
379 UpdateExternalTexture(); | 379 UpdateExternalTexture(); |
380 | 380 |
381 if (!window_->layer()->GetCompositor()) { | 381 if (!window_->layer()->GetCompositor()) { |
382 // We have no compositor, so we have no way to display the surface | 382 // We have no compositor, so we have no way to display the surface |
383 // Must still send the ACK | 383 // Must still send the ACK |
384 RenderWidgetHost::AcknowledgePostSubBuffer(params.route_id, gpu_host_id); | 384 RenderWidgetHost::AcknowledgePostSubBuffer(params.route_id, gpu_host_id); |
385 } else { | 385 } else { |
386 gfx::Size surface_size = | 386 gfx::Size surface_size = |
387 accelerated_surface_containers_[params.surface_id]->GetSize(); | 387 accelerated_surface_containers_[params.surface_handle]->GetSize(); |
388 | 388 |
389 // Co-ordinates come in OpenGL co-ordinate space. | 389 // Co-ordinates come in OpenGL co-ordinate space. |
390 // We need to convert to layer space. | 390 // We need to convert to layer space. |
391 window_->SchedulePaintInRect(gfx::Rect( | 391 window_->SchedulePaintInRect(gfx::Rect( |
392 params.x, | 392 params.x, |
393 surface_size.height() - params.y - params.height, | 393 surface_size.height() - params.y - params.height, |
394 params.width, | 394 params.width, |
395 params.height)); | 395 params.height)); |
396 | 396 |
397 // Add sending an ACK to the list of things to do OnCompositingEnded | 397 // Add sending an ACK to the list of things to do OnCompositingEnded |
398 on_compositing_ended_callbacks_.push_back( | 398 on_compositing_ended_callbacks_.push_back( |
399 base::Bind(&RenderWidgetHost::AcknowledgePostSubBuffer, | 399 base::Bind(&RenderWidgetHost::AcknowledgePostSubBuffer, |
400 params.route_id, gpu_host_id)); | 400 params.route_id, gpu_host_id)); |
401 ui::Compositor* compositor = window_->layer()->GetCompositor(); | 401 ui::Compositor* compositor = window_->layer()->GetCompositor(); |
402 if (!compositor->HasObserver(this)) | 402 if (!compositor->HasObserver(this)) |
403 compositor->AddObserver(this); | 403 compositor->AddObserver(this); |
404 } | 404 } |
405 #else | 405 #else |
406 NOTREACHED(); | 406 NOTREACHED(); |
407 #endif | 407 #endif |
408 } | 408 } |
409 | 409 |
410 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) | 410 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) |
411 void RenderWidgetHostViewAura::AcceleratedSurfaceNew( | 411 void RenderWidgetHostViewAura::AcceleratedSurfaceNew( |
412 int32 width, | 412 int32 width, |
413 int32 height, | 413 int32 height, |
414 uint64* surface_id, | 414 uint64* surface_handle, |
415 TransportDIB::Handle* surface_handle) { | 415 TransportDIB::Handle* shm_handle) { |
416 scoped_refptr<AcceleratedSurfaceContainerLinux> surface( | 416 scoped_refptr<AcceleratedSurfaceContainerLinux> surface( |
417 AcceleratedSurfaceContainerLinux::Create(gfx::Size(width, height))); | 417 AcceleratedSurfaceContainerLinux::Create(gfx::Size(width, height))); |
418 if (!surface->Initialize(surface_id)) { | 418 if (!surface->Initialize(surface_handle)) { |
419 LOG(ERROR) << "Failed to create AcceleratedSurfaceContainer"; | 419 LOG(ERROR) << "Failed to create AcceleratedSurfaceContainer"; |
420 return; | 420 return; |
421 } | 421 } |
422 *surface_handle = surface->Handle(); | 422 *shm_handle = surface->Handle(); |
423 | 423 |
424 accelerated_surface_containers_[*surface_id] = surface; | 424 accelerated_surface_containers_[*surface_handle] = surface; |
425 } | 425 } |
426 | 426 |
427 void RenderWidgetHostViewAura::AcceleratedSurfaceRelease(uint64 surface_id) { | 427 void RenderWidgetHostViewAura::AcceleratedSurfaceRelease( |
428 if (current_surface_ == surface_id) { | 428 uint64 surface_handle) { |
| 429 if (current_surface_ == surface_handle) { |
429 current_surface_ = gfx::kNullPluginWindow; | 430 current_surface_ = gfx::kNullPluginWindow; |
430 // Don't call UpdateExternalTexture: it's possible that a new surface with | 431 // Don't call UpdateExternalTexture: it's possible that a new surface with |
431 // the same ID will be re-created right away, in which case we don't want to | 432 // the same ID will be re-created right away, in which case we don't want to |
432 // flip back and forth. Instead wait until we got the accelerated | 433 // flip back and forth. Instead wait until we got the accelerated |
433 // compositing deactivation. | 434 // compositing deactivation. |
434 } | 435 } |
435 accelerated_surface_containers_.erase(surface_id); | 436 accelerated_surface_containers_.erase(surface_handle); |
436 } | 437 } |
437 #endif | 438 #endif |
438 | 439 |
439 void RenderWidgetHostViewAura::SetBackground(const SkBitmap& background) { | 440 void RenderWidgetHostViewAura::SetBackground(const SkBitmap& background) { |
440 RenderWidgetHostView::SetBackground(background); | 441 RenderWidgetHostView::SetBackground(background); |
441 host_->SetBackground(background); | 442 host_->SetBackground(background); |
442 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) | 443 #if defined(UI_COMPOSITOR_IMAGE_TRANSPORT) |
443 window_->layer()->SetFillsBoundsOpaquely(background.isOpaque()); | 444 window_->layer()->SetFillsBoundsOpaquely(background.isOpaque()); |
444 #endif | 445 #endif |
445 } | 446 } |
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 // static | 918 // static |
918 void RenderWidgetHostView::GetDefaultScreenInfo( | 919 void RenderWidgetHostView::GetDefaultScreenInfo( |
919 WebKit::WebScreenInfo* results) { | 920 WebKit::WebScreenInfo* results) { |
920 const gfx::Size size = gfx::Screen::GetPrimaryMonitorSize(); | 921 const gfx::Size size = gfx::Screen::GetPrimaryMonitorSize(); |
921 results->rect = WebKit::WebRect(0, 0, size.width(), size.height()); | 922 results->rect = WebKit::WebRect(0, 0, size.width(), size.height()); |
922 results->availableRect = results->rect; | 923 results->availableRect = results->rect; |
923 // TODO(derat): Don't hardcode this? | 924 // TODO(derat): Don't hardcode this? |
924 results->depth = 24; | 925 results->depth = 24; |
925 results->depthPerComponent = 8; | 926 results->depthPerComponent = 8; |
926 } | 927 } |
OLD | NEW |