[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