summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/android/plugins')
-rw-r--r--Source/WebKit/android/plugins/PluginWidgetAndroid.cpp17
-rw-r--r--Source/WebKit/android/plugins/PluginWidgetAndroid.h3
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.