summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/SurfaceView.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-05-21 17:32:42 -0700
committerDianne Hackborn <hackbod@google.com>2009-05-21 17:50:33 -0700
commitc4d5d02667af6989a3121072871f6a4b1e68b594 (patch)
treec6b1dfd9c6e777dab1286d4c4ac69e1c7e48f5d7 /core/java/android/view/SurfaceView.java
parent384bfa270cdcb5dc3bc9ec396b783e25eb2d9b4d (diff)
downloadframeworks_base-c4d5d02667af6989a3121072871f6a4b1e68b594.zip
frameworks_base-c4d5d02667af6989a3121072871f6a4b1e68b594.tar.gz
frameworks_base-c4d5d02667af6989a3121072871f6a4b1e68b594.tar.bz2
Add new window manager type for a hacking second-level media surface.
This adds a new window type that is a surface that sits between the current media type and the application window, in theory allowing you to have two surface views in your hierarchy and control their Z-ordering. There is also another hidden API on SurfaceView to set the type of your window. All a big hack, but for the good of the commonwealth!
Diffstat (limited to 'core/java/android/view/SurfaceView.java')
-rw-r--r--core/java/android/view/SurfaceView.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 3d023f7..0dc2570 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -100,6 +100,8 @@ public class SurfaceView extends View {
static final int KEEP_SCREEN_ON_MSG = 1;
static final int GET_NEW_SURFACE_MSG = 2;
+ int mWindowType = WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA;
+
boolean mIsCreating = false;
final Handler mHandler = new Handler() {
@@ -285,6 +287,15 @@ public class SurfaceView extends View {
super.dispatchDraw(canvas);
}
+ /**
+ * Hack to allow special layering of windows. The type is one of the
+ * types in WindowManager.LayoutParams. This is a hack so:
+ * @hide
+ */
+ public void setWindowType(int type) {
+ mWindowType = type;
+ }
+
private void updateWindow(boolean force) {
if (!mHaveFrame) {
return;
@@ -342,7 +353,7 @@ public class SurfaceView extends View {
if (mWindow == null) {
mWindow = new MyWindow(this);
- mLayout.type = WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA;
+ mLayout.type = mWindowType;
mLayout.gravity = Gravity.LEFT|Gravity.TOP;
mSession.add(mWindow, mLayout,
mVisible ? VISIBLE : GONE, mContentInsets);