Alexandre Julliard : wineandroid: Add a header for some of the Android native APIs and data structures.

Alexandre Julliard julliard at winehq.org
Fri Jun 2 17:03:27 CDT 2017


Module: wine
Branch: master
Commit: 7124a7d90c0dc123da5a86229a7f64303bd32481
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7124a7d90c0dc123da5a86229a7f64303bd32481

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Jun  2 11:46:21 2017 +0200

wineandroid: Add a header for some of the Android native APIs and data structures.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wineandroid.drv/android.h        |   1 +
 dlls/wineandroid.drv/android_native.h | 233 ++++++++++++++++++++++++++++++++++
 2 files changed, 234 insertions(+)

diff --git a/dlls/wineandroid.drv/android.h b/dlls/wineandroid.drv/android.h
index 70a1e04..fb8b67d 100644
--- a/dlls/wineandroid.drv/android.h
+++ b/dlls/wineandroid.drv/android.h
@@ -32,6 +32,7 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "wine/gdi_driver.h"
+#include "android_native.h"
 
 
 /**************************************************************************
diff --git a/dlls/wineandroid.drv/android_native.h b/dlls/wineandroid.drv/android_native.h
new file mode 100644
index 0000000..5efd564
--- /dev/null
+++ b/dlls/wineandroid.drv/android_native.h
@@ -0,0 +1,233 @@
+/*
+ * Android native system definitions
+ *
+ * Copyright 2013 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* Copy of some Android native structures to avoid depending on the Android source */
+/* Hopefully these won't change too frequently... */
+
+#ifndef __WINE_ANDROID_NATIVE_H
+#define __WINE_ANDROID_NATIVE_H
+
+/* Native window definitions */
+
+typedef struct native_handle
+{
+    int version;
+    int numFds;
+    int numInts;
+    int data[0];
+} native_handle_t;
+
+typedef const native_handle_t *buffer_handle_t;
+
+struct android_native_base_t
+{
+    int magic;
+    int version;
+    void *reserved[4];
+    void (*incRef)(struct android_native_base_t *base);
+    void (*decRef)(struct android_native_base_t *base);
+};
+
+typedef struct android_native_rect_t
+{
+    int32_t left;
+    int32_t top;
+    int32_t right;
+    int32_t bottom;
+} android_native_rect_t;
+
+struct ANativeWindowBuffer
+{
+    struct android_native_base_t common;
+    int width;
+    int height;
+    int stride;
+    int format;
+    int usage;
+    void *reserved[2];
+    buffer_handle_t handle;
+    void *reserved_proc[8];
+};
+
+struct ANativeWindow
+{
+    struct android_native_base_t common;
+    uint32_t flags;
+    int      minSwapInterval;
+    int      maxSwapInterval;
+    float    xdpi;
+    float    ydpi;
+    intptr_t oem[4];
+    int (*setSwapInterval)(struct ANativeWindow *window, int interval);
+    int (*dequeueBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer **buffer);
+    int (*lockBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer);
+    int (*queueBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer);
+    int (*query)(const struct ANativeWindow *window, int what, int *value);
+    int (*perform)(struct ANativeWindow *window, int operation, ... );
+    int (*cancelBuffer_DEPRECATED)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer);
+    int (*dequeueBuffer)(struct ANativeWindow *window, struct ANativeWindowBuffer **buffer, int *fenceFd);
+    int (*queueBuffer)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer, int fenceFd);
+    int (*cancelBuffer)(struct ANativeWindow *window, struct ANativeWindowBuffer *buffer, int fenceFd);
+};
+
+enum native_window_query
+{
+    NATIVE_WINDOW_WIDTH                     = 0,
+    NATIVE_WINDOW_HEIGHT                    = 1,
+    NATIVE_WINDOW_FORMAT                    = 2,
+    NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS    = 3,
+    NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER = 4,
+    NATIVE_WINDOW_CONCRETE_TYPE             = 5,
+    NATIVE_WINDOW_DEFAULT_WIDTH             = 6,
+    NATIVE_WINDOW_DEFAULT_HEIGHT            = 7,
+    NATIVE_WINDOW_TRANSFORM_HINT            = 8,
+    NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND   = 9
+};
+
+enum native_window_perform
+{
+    NATIVE_WINDOW_SET_USAGE                   = 0,
+    NATIVE_WINDOW_CONNECT                     = 1,
+    NATIVE_WINDOW_DISCONNECT                  = 2,
+    NATIVE_WINDOW_SET_CROP                    = 3,
+    NATIVE_WINDOW_SET_BUFFER_COUNT            = 4,
+    NATIVE_WINDOW_SET_BUFFERS_GEOMETRY        = 5,
+    NATIVE_WINDOW_SET_BUFFERS_TRANSFORM       = 6,
+    NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP       = 7,
+    NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS      = 8,
+    NATIVE_WINDOW_SET_BUFFERS_FORMAT          = 9,
+    NATIVE_WINDOW_SET_SCALING_MODE            = 10,
+    NATIVE_WINDOW_LOCK                        = 11,
+    NATIVE_WINDOW_UNLOCK_AND_POST             = 12,
+    NATIVE_WINDOW_API_CONNECT                 = 13,
+    NATIVE_WINDOW_API_DISCONNECT              = 14,
+    NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS = 15,
+    NATIVE_WINDOW_SET_POST_TRANSFORM_CROP     = 16
+};
+
+enum native_window_api
+{
+    NATIVE_WINDOW_API_EGL = 1,
+    NATIVE_WINDOW_API_CPU = 2,
+    NATIVE_WINDOW_API_MEDIA = 3,
+    NATIVE_WINDOW_API_CAMERA = 4
+};
+
+enum android_pixel_format
+{
+    PF_RGBA_8888 = 1,
+    PF_RGBX_8888 = 2,
+    PF_RGB_888   = 3,
+    PF_RGB_565   = 4,
+    PF_BGRA_8888 = 5,
+    PF_RGBA_5551 = 6,
+    PF_RGBA_4444 = 7
+};
+
+
+/* Hardware module definitions */
+
+struct hw_module_methods_t;
+struct hw_device_t;
+struct android_ycbcr;
+
+struct hw_module_t
+{
+    uint32_t tag;
+    uint16_t module_api_version;
+    uint16_t hal_api_version;
+    const char *id;
+    const char *name;
+    const char *author;
+    struct hw_module_methods_t *methods;
+    void *dso;
+    void *reserved[32-7];
+};
+
+struct hw_module_methods_t
+{
+    int (*open)(const struct hw_module_t *module, const char *id, struct hw_device_t **device);
+};
+
+struct hw_device_t
+{
+    uint32_t tag;
+    uint32_t version;
+    struct hw_module_t *module;
+    void *reserved[12];
+    int (*close)(struct hw_device_t *device);
+};
+
+struct gralloc_module_t
+{
+    struct hw_module_t common;
+    int (*registerBuffer)(struct gralloc_module_t const *module, buffer_handle_t handle);
+    int (*unregisterBuffer)(struct gralloc_module_t const *module, buffer_handle_t handle);
+    int (*lock)(struct gralloc_module_t const *module, buffer_handle_t handle, int usage, int l, int t, int w, int h, void **vaddr);
+    int (*unlock)(struct gralloc_module_t const *module, buffer_handle_t handle);
+    int (*perform)(struct gralloc_module_t const *module, int operation, ... );
+    int (*lock_ycbcr)(struct gralloc_module_t const *module, buffer_handle_t handle, int usage, int l, int t, int w, int h, struct android_ycbcr *ycbcr);
+    void *reserved_proc[6];
+};
+
+#define ANDROID_NATIVE_MAKE_CONSTANT(a,b,c,d) \
+    (((unsigned)(a)<<24)|((unsigned)(b)<<16)|((unsigned)(c)<<8)|(unsigned)(d))
+
+#define ANDROID_NATIVE_WINDOW_MAGIC \
+    ANDROID_NATIVE_MAKE_CONSTANT('_','w','n','d')
+
+#define ANDROID_NATIVE_BUFFER_MAGIC \
+    ANDROID_NATIVE_MAKE_CONSTANT('_','b','f','r')
+
+enum gralloc_usage
+{
+    GRALLOC_USAGE_SW_READ_NEVER         = 0x00000000,
+    GRALLOC_USAGE_SW_READ_RARELY        = 0x00000002,
+    GRALLOC_USAGE_SW_READ_OFTEN         = 0x00000003,
+    GRALLOC_USAGE_SW_READ_MASK          = 0x0000000F,
+    GRALLOC_USAGE_SW_WRITE_NEVER        = 0x00000000,
+    GRALLOC_USAGE_SW_WRITE_RARELY       = 0x00000020,
+    GRALLOC_USAGE_SW_WRITE_OFTEN        = 0x00000030,
+    GRALLOC_USAGE_SW_WRITE_MASK         = 0x000000F0,
+    GRALLOC_USAGE_HW_TEXTURE            = 0x00000100,
+    GRALLOC_USAGE_HW_RENDER             = 0x00000200,
+    GRALLOC_USAGE_HW_2D                 = 0x00000400,
+    GRALLOC_USAGE_HW_COMPOSER           = 0x00000800,
+    GRALLOC_USAGE_HW_FB                 = 0x00001000,
+    GRALLOC_USAGE_HW_VIDEO_ENCODER      = 0x00010000,
+    GRALLOC_USAGE_HW_CAMERA_WRITE       = 0x00020000,
+    GRALLOC_USAGE_HW_CAMERA_READ        = 0x00040000,
+    GRALLOC_USAGE_HW_CAMERA_ZSL         = 0x00060000,
+    GRALLOC_USAGE_HW_CAMERA_MASK        = 0x00060000,
+    GRALLOC_USAGE_HW_MASK               = 0x00071F00,
+    GRALLOC_USAGE_EXTERNAL_DISP         = 0x00002000,
+    GRALLOC_USAGE_PROTECTED             = 0x00004000,
+    GRALLOC_USAGE_PRIVATE_0             = 0x10000000,
+    GRALLOC_USAGE_PRIVATE_1             = 0x20000000,
+    GRALLOC_USAGE_PRIVATE_2             = 0x40000000,
+    GRALLOC_USAGE_PRIVATE_3             = 0x80000000,
+    GRALLOC_USAGE_PRIVATE_MASK          = 0xF0000000,
+};
+
+#define GRALLOC_HARDWARE_MODULE_ID "gralloc"
+
+extern int hw_get_module(const char *id, const struct hw_module_t **module);
+
+#endif /* __WINE_ANDROID_NATIVE_H */




More information about the wine-cvs mailing list