diff options
Diffstat (limited to 'Source/WebKit/android/plugins')
-rw-r--r-- | Source/WebKit/android/plugins/PluginWidgetAndroid.cpp | 17 | ||||
-rw-r--r-- | Source/WebKit/android/plugins/PluginWidgetAndroid.h | 3 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Source/WebKit/android/plugins/PluginWidgetAndroid.cpp b/Source/WebKit/android/plugins/PluginWidgetAndroid.cpp index 761e948..fc98837 100644 --- a/Source/WebKit/android/plugins/PluginWidgetAndroid.cpp +++ b/Source/WebKit/android/plugins/PluginWidgetAndroid.cpp @@ -76,6 +76,7 @@ PluginWidgetAndroid::PluginWidgetAndroid(WebCore::PluginView* view) m_layer = 0; m_powerState = kDefault_ANPPowerState; m_fullScreenOrientation = -1; + m_drawEventDelayed = false; } PluginWidgetAndroid::~PluginWidgetAndroid() { @@ -175,6 +176,14 @@ bool PluginWidgetAndroid::setDrawingModel(ANPDrawingModel model) { return true; } +void PluginWidgetAndroid::checkSurfaceReady() { + if(!m_drawEventDelayed) + return; + + m_drawEventDelayed = false; + sendSizeAndVisibilityEvents(true); +} + // returned rect is in the page coordinate bool PluginWidgetAndroid::isDirty(SkIRect* rect) const { // nothing to report if we haven't had setWindow() called yet @@ -382,8 +391,14 @@ bool PluginWidgetAndroid::isAcceptingEvent(ANPEventFlag flag) { } void PluginWidgetAndroid::sendSizeAndVisibilityEvents(const bool updateDimensions) { - // TODO update the bitmap size based on the zoom? (for kBitmap_ANPDrawingModel) + if (m_drawingModel == kOpenGL_ANPDrawingModel && + !m_layer->acquireNativeWindowForContent()) { + m_drawEventDelayed = true; + return; + } + + // TODO update the bitmap size based on the zoom? (for kBitmap_ANPDrawingModel) const float zoomLevel = m_core->scale(); // notify the plugin of the new size diff --git a/Source/WebKit/android/plugins/PluginWidgetAndroid.h b/Source/WebKit/android/plugins/PluginWidgetAndroid.h index 0e4cf7e..87612dd 100644 --- a/Source/WebKit/android/plugins/PluginWidgetAndroid.h +++ b/Source/WebKit/android/plugins/PluginWidgetAndroid.h @@ -83,6 +83,8 @@ struct PluginWidgetAndroid { bool isOpenGLDrawingModel() const { return kOpenGL_ANPDrawingModel == m_drawingModel; } + void checkSurfaceReady(); + /* Returns true (and optionally updates rect with the dirty bounds in the page coordinate) if the plugin has invalidate us. */ @@ -207,6 +209,7 @@ private: bool m_isSurfaceClippedOut; ANPPowerState m_powerState; int m_fullScreenOrientation; + bool m_drawEventDelayed; /* We limit the number of rectangles to minimize storage and ensure adequate speed. |