OSDN Git Service

Properly connect to surface flinger in our shell tools
authorAndreas Huber <andih@google.com>
Thu, 15 Sep 2011 19:42:32 +0000 (12:42 -0700)
committerAndreas Huber <andih@google.com>
Tue, 20 Sep 2011 17:37:18 +0000 (10:37 -0700)
Also raise the layer to INT_MAX to float in front of the toolbar.

Change-Id: I045a1c83924e6655f1734d15f2504b90312eec64

cmds/stagefright/sf2.cpp
cmds/stagefright/stagefright.cpp
cmds/stagefright/stream.cpp

index 6fa66cf..263ecd1 100644 (file)
@@ -569,12 +569,16 @@ int main(int argc, char **argv) {
         CHECK(control->isValid());
 
         SurfaceComposerClient::openGlobalTransaction();
-        CHECK_EQ(control->setLayer(30000), (status_t)OK);
+        CHECK_EQ(control->setLayer(INT_MAX), (status_t)OK);
         CHECK_EQ(control->show(), (status_t)OK);
         SurfaceComposerClient::closeGlobalTransaction();
 
         surface = control->getSurface();
         CHECK(surface != NULL);
+
+        CHECK_EQ((status_t)OK,
+                 native_window_api_connect(
+                     surface.get(), NATIVE_WINDOW_API_MEDIA));
     }
 
     sp<Controller> controller =
@@ -589,6 +593,10 @@ int main(int argc, char **argv) {
     looper->unregisterHandler(controller->id());
 
     if (!decodeAudio && useSurface) {
+        CHECK_EQ((status_t)OK,
+                 native_window_api_disconnect(
+                     surface.get(), NATIVE_WINDOW_API_MEDIA));
+
         composerClient->dispose();
     }
 
index 34f0a64..2e0aa9b 100644 (file)
@@ -874,7 +874,7 @@ int main(int argc, char **argv) {
             CHECK(control->isValid());
 
             SurfaceComposerClient::openGlobalTransaction();
-            CHECK_EQ(control->setLayer(30000), (status_t)OK);
+            CHECK_EQ(control->setLayer(INT_MAX), (status_t)OK);
             CHECK_EQ(control->show(), (status_t)OK);
             SurfaceComposerClient::closeGlobalTransaction();
 
@@ -886,6 +886,10 @@ int main(int argc, char **argv) {
             sp<SurfaceTexture> texture = new SurfaceTexture(0 /* tex */);
             gSurface = new SurfaceTextureClient(texture);
         }
+
+        CHECK_EQ((status_t)OK,
+                 native_window_api_connect(
+                     gSurface.get(), NATIVE_WINDOW_API_MEDIA));
     }
 
     DataSource::RegisterDefaultSniffers();
@@ -1077,6 +1081,10 @@ int main(int argc, char **argv) {
     }
 
     if ((useSurfaceAlloc || useSurfaceTexAlloc) && !audioOnly) {
+        CHECK_EQ((status_t)OK,
+                 native_window_api_disconnect(
+                     gSurface.get(), NATIVE_WINDOW_API_MEDIA));
+
         gSurface.clear();
 
         if (useSurfaceAlloc) {
index b13236a..2378345 100644 (file)
@@ -323,7 +323,7 @@ int main(int argc, char **argv) {
     CHECK(control->isValid());
 
     SurfaceComposerClient::openGlobalTransaction();
-    CHECK_EQ(control->setLayer(30000), (status_t)OK);
+    CHECK_EQ(control->setLayer(INT_MAX), (status_t)OK);
     CHECK_EQ(control->show(), (status_t)OK);
     SurfaceComposerClient::closeGlobalTransaction();