summaryrefslogtreecommitdiffstats
path: root/ui/base/android/window_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/base/android/window_android.cc')
-rw-r--r--ui/base/android/window_android.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/ui/base/android/window_android.cc b/ui/base/android/window_android.cc
index bacf023..916e821 100644
--- a/ui/base/android/window_android.cc
+++ b/ui/base/android/window_android.cc
@@ -9,6 +9,7 @@
#include "base/android/jni_helper.h"
#include "base/android/scoped_java_ref.h"
#include "jni/WindowAndroid_jni.h"
+#include "ui/base/android/window_android_compositor.h"
#include "ui/base/android/window_android_observer.h"
namespace ui {
@@ -17,7 +18,8 @@ using base::android::AttachCurrentThread;
using base::android::ScopedJavaLocalRef;
WindowAndroid::WindowAndroid(JNIEnv* env, jobject obj)
- : weak_java_window_(env, obj) {
+ : weak_java_window_(env, obj),
+ compositor_(NULL) {
}
void WindowAndroid::Destroy(JNIEnv* env, jobject obj) {
@@ -66,13 +68,18 @@ void WindowAndroid::RemoveObserver(WindowAndroidObserver* observer) {
observer_list_.RemoveObserver(observer);
}
-void WindowAndroid::AttachCompositor() {
+void WindowAndroid::AttachCompositor(WindowAndroidCompositor* compositor) {
+ if (compositor_ && compositor != compositor_)
+ DetachCompositor();
+
+ compositor_ = compositor;
FOR_EACH_OBSERVER(WindowAndroidObserver,
observer_list_,
OnAttachCompositor());
}
void WindowAndroid::DetachCompositor() {
+ compositor_ = NULL;
FOR_EACH_OBSERVER(WindowAndroidObserver,
observer_list_,
OnDetachCompositor());