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

Unified Diff: chrome/browser/renderer_host/render_widget_host_view_gtk.cc

Issue 6462034: Refactor how surfaces are acquired for GPU compositing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unnecessary include. Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/renderer_host/render_widget_host_view_gtk.cc
diff --git a/chrome/browser/renderer_host/render_widget_host_view_gtk.cc b/chrome/browser/renderer_host/render_widget_host_view_gtk.cc
index 7fce046571bbb7f4eff565fb57ce9cd425c68144..5ef533dea8fd6912004f05859bb5833fc9e791e3 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_gtk.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_gtk.cc
@@ -38,6 +38,7 @@
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/x/x11_util.h"
#include "ui/gfx/gtk_preserve_window.h"
+#include "ui/gfx/gtk_native_view_id_manager.h"
#include "webkit/glue/webaccessibility.h"
#include "webkit/glue/webcursor_gtk_data.h"
#include "webkit/plugins/npapi/webplugin.h"
@@ -495,7 +496,8 @@ RenderWidgetHostViewGtk::RenderWidgetHostViewGtk(RenderWidgetHost* widget_host)
do_x_grab_(false),
is_fullscreen_(false),
dragged_at_horizontal_edge_(0),
- dragged_at_vertical_edge_(0) {
+ dragged_at_vertical_edge_(0),
+ accelerated_surface_acquired_(false) {
host_->set_view(this);
}
@@ -732,6 +734,13 @@ void RenderWidgetHostViewGtk::RenderViewGone(base::TerminationStatus status,
}
void RenderWidgetHostViewGtk::Destroy() {
+ if (accelerated_surface_acquired_) {
+ GtkNativeViewManager* manager = GtkNativeViewManager::GetInstance();
+ gfx::NativeViewId view_id = gfx::IdFromNativeView(GetNativeView());
+ gfx::PluginWindowHandle surface = manager->GetXIDForId(&surface, view_id);
+ manager->ReleasePermanentXID(surface);
+ }
+
if (do_x_grab_) {
// Undo the X grab.
GdkDisplay* display = gtk_widget_get_display(parent_);
@@ -1071,6 +1080,26 @@ void RenderWidgetHostViewGtk::AcceleratedCompositingActivated(bool activated) {
gtk_preserve_window_delegate_resize(widget, activated);
}
+gfx::PluginWindowHandle RenderWidgetHostViewGtk::AcquireCompositingSurface() {
+ GtkNativeViewManager* manager = GtkNativeViewManager::GetInstance();
+ gfx::PluginWindowHandle surface = gfx::kNullPluginWindow;
+ gfx::NativeViewId view_id = gfx::IdFromNativeView(GetNativeView());
+
+ if (!manager->GetPermanentXIDForId(&surface, view_id)) {
+ DLOG(ERROR) << "Can't find XID for view id " << view_id;
+ } else {
+ accelerated_surface_acquired_ = true;
+ }
+ return surface;
+}
+
+void RenderWidgetHostViewGtk::ReleaseCompositingSurface(
+ gfx::PluginWindowHandle surface) {
+ GtkNativeViewManager* manager = GtkNativeViewManager::GetInstance();
+ manager->ReleasePermanentXID(surface);
+ accelerated_surface_acquired_ = false;
+}
+
void RenderWidgetHostViewGtk::ForwardKeyboardEvent(
const NativeWebKeyboardEvent& event) {
if (!host_)
« no previous file with comments | « chrome/browser/renderer_host/render_widget_host_view_gtk.h ('k') | chrome/browser/renderer_host/render_widget_host_view_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698