[vlc-devel] [PATCH 2/3] nativewindowpriv: add setOrientation

Thomas Guillem thomas.guillem at gmail.com
Tue Sep 30 12:18:10 CEST 2014


---
 modules/video_output/android/nativewindowpriv.c | 29 +++++++++++++++++++++++++
 modules/video_output/android/utils.c            |  5 +++--
 modules/video_output/android/utils.h            |  3 +++
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/modules/video_output/android/nativewindowpriv.c b/modules/video_output/android/nativewindowpriv.c
index 2ca5a0e..11e7788 100644
--- a/modules/video_output/android/nativewindowpriv.c
+++ b/modules/video_output/android/nativewindowpriv.c
@@ -262,3 +262,32 @@ int ANativeWindowPriv_cancel( void *window, void *p_handle )
 
     return 0;
 }
+
+int ANativeWindowPriv_setOrientation( void *window, int orientation )
+{
+    ANativeWindow *anw = (ANativeWindow *)window;
+    status_t err = NO_ERROR;
+    int transform;
+
+    CHECK_ANW();
+
+    switch( orientation )
+    {
+        case 90:
+            transform = NATIVE_WINDOW_TRANSFORM_ROT_90;
+            break;
+        case 180:
+            transform = NATIVE_WINDOW_TRANSFORM_ROT_180;
+            break;
+        case 270:
+            transform = NATIVE_WINDOW_TRANSFORM_ROT_270;
+            break;
+        default:
+            transform = 0;
+    }
+
+    err = native_window_set_buffers_transform( anw, transform );
+    CHECK_ERR();
+
+    return 0;
+}
diff --git a/modules/video_output/android/utils.c b/modules/video_output/android/utils.c
index a2239db..ed3b905 100644
--- a/modules/video_output/android/utils.c
+++ b/modules/video_output/android/utils.c
@@ -61,11 +61,12 @@ int LoadNativeWindowPrivAPI(native_window_priv_api_t *native)
     native->lock = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_lock");
     native->queue = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_queue");
     native->cancel = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_cancel");
+    native->setOrientation = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setOrientation");
 
     return native->connect && native->disconnect && native->setup &&
         native->getMinUndequeued && native->setBufferCount && native->setCrop &&
-        native->dequeue && native->lock && native->queue && native->cancel
-        ? 0 : -1;
+        native->dequeue && native->lock && native->queue && native->cancel &&
+        native->setOrientation ? 0 : -1;
 }
 
 extern void jni_getMouseCoordinates(int *, int *, int *, int *);
diff --git a/modules/video_output/android/utils.h b/modules/video_output/android/utils.h
index 2500c53..e78c688 100644
--- a/modules/video_output/android/utils.h
+++ b/modules/video_output/android/utils.h
@@ -59,6 +59,8 @@ typedef int (*ptr_ANativeWindowPriv_dequeue) (void *, void **);
 typedef int (*ptr_ANativeWindowPriv_lock) (void *, void *);
 typedef int (*ptr_ANativeWindowPriv_queue) (void *, void *);
 typedef int (*ptr_ANativeWindowPriv_cancel) (void *, void *);
+typedef int (*ptr_ANativeWindowPriv_setOrientation) (void *, int);
+
 typedef struct
 {
     ptr_ANativeWindowPriv_connect connect;
@@ -71,6 +73,7 @@ typedef struct
     ptr_ANativeWindowPriv_lock lock;
     ptr_ANativeWindowPriv_queue queue;
     ptr_ANativeWindowPriv_cancel cancel;
+    ptr_ANativeWindowPriv_setOrientation setOrientation;
 } native_window_priv_api_t;
 
 /* Fill the structure passed as parameter and return 0 if all symbols are
-- 
2.1.0




More information about the vlc-devel mailing list