mirror of
https://github.com/brl/mutter.git
synced 2025-04-17 23:59:38 +00:00
renderer: drop android support
This commit is contained in:
parent
ce8aa45fa4
commit
b5648dc0cb
@ -473,11 +473,6 @@ cogl_sources_c += \
|
|||||||
winsys/cogl-winsys-egl-x11.c \
|
winsys/cogl-winsys-egl-x11.c \
|
||||||
winsys/cogl-winsys-egl-x11-private.h
|
winsys/cogl-winsys-egl-x11-private.h
|
||||||
endif
|
endif
|
||||||
if SUPPORT_EGL_PLATFORM_ANDROID
|
|
||||||
cogl_sources_c += \
|
|
||||||
winsys/cogl-winsys-egl-android.c \
|
|
||||||
winsys/cogl-winsys-egl-android-private.h
|
|
||||||
endif
|
|
||||||
if SUPPORT_EGL
|
if SUPPORT_EGL
|
||||||
cogl_experimental_h += cogl-egl.h
|
cogl_experimental_h += cogl-egl.h
|
||||||
cogl_nodist_experimental_h += cogl-egl-defines.h
|
cogl_nodist_experimental_h += cogl-egl-defines.h
|
||||||
|
@ -420,56 +420,4 @@ _cogl_bitmap_from_file (CoglContext *ctx,
|
|||||||
error);
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef COGL_HAS_ANDROID_SUPPORT
|
|
||||||
CoglBitmap *
|
|
||||||
_cogl_android_bitmap_new_from_asset (CoglContext *ctx,
|
|
||||||
AAssetManager *manager,
|
|
||||||
const char *filename,
|
|
||||||
CoglError **error)
|
|
||||||
{
|
|
||||||
AAsset *asset;
|
|
||||||
const void *data;
|
|
||||||
off_t len;
|
|
||||||
int stb_pixel_format;
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
uint8_t *pixels;
|
|
||||||
CoglBitmap *bmp;
|
|
||||||
|
|
||||||
asset = AAssetManager_open (manager, filename, AASSET_MODE_BUFFER);
|
|
||||||
if (!asset)
|
|
||||||
{
|
|
||||||
_cogl_set_error_literal (error,
|
|
||||||
COGL_BITMAP_ERROR,
|
|
||||||
COGL_BITMAP_ERROR_FAILED,
|
|
||||||
"Failed to open asset");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
data = AAsset_getBuffer (asset);
|
|
||||||
if (!data)
|
|
||||||
{
|
|
||||||
_cogl_set_error_literal (error,
|
|
||||||
COGL_BITMAP_ERROR,
|
|
||||||
COGL_BITMAP_ERROR_FAILED,
|
|
||||||
"Failed to ::getBuffer from asset");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
len = AAsset_getLength (asset);
|
|
||||||
|
|
||||||
pixels = stbi_load_from_memory (data, len,
|
|
||||||
&width, &height,
|
|
||||||
&stb_pixel_format, STBI_default);
|
|
||||||
|
|
||||||
bmp = _cogl_bitmap_new_from_stb_pixels (ctx, pixels, stb_pixel_format,
|
|
||||||
width, height,
|
|
||||||
error);
|
|
||||||
|
|
||||||
AAsset_close (asset);
|
|
||||||
|
|
||||||
return bmp;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,10 +37,6 @@
|
|||||||
#include "cogl-buffer.h"
|
#include "cogl-buffer.h"
|
||||||
#include "cogl-bitmap.h"
|
#include "cogl-bitmap.h"
|
||||||
|
|
||||||
#ifdef COGL_HAS_ANDROID_SUPPORT
|
|
||||||
#include <android/asset_manager.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct _CoglBitmap
|
struct _CoglBitmap
|
||||||
{
|
{
|
||||||
CoglObject _parent;
|
CoglObject _parent;
|
||||||
@ -126,14 +122,6 @@ _cogl_bitmap_from_file (CoglContext *ctx,
|
|||||||
const char *filename,
|
const char *filename,
|
||||||
CoglError **error);
|
CoglError **error);
|
||||||
|
|
||||||
#ifdef COGL_HAS_ANDROID_SUPPORT
|
|
||||||
CoglBitmap *
|
|
||||||
_cogl_android_bitmap_new_from_asset (CoglContext *ctx,
|
|
||||||
AAssetManager *manager,
|
|
||||||
const char *filename,
|
|
||||||
CoglError **error);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CoglBool
|
CoglBool
|
||||||
_cogl_bitmap_unpremult (CoglBitmap *dst_bmp,
|
_cogl_bitmap_unpremult (CoglBitmap *dst_bmp,
|
||||||
CoglError **error);
|
CoglError **error);
|
||||||
|
@ -332,22 +332,6 @@ cogl_bitmap_new_with_size (CoglContext *context,
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef COGL_HAS_ANDROID_SUPPORT
|
|
||||||
CoglBitmap *
|
|
||||||
cogl_android_bitmap_new_from_asset (CoglContext *ctx,
|
|
||||||
AAssetManager *manager,
|
|
||||||
const char *filename,
|
|
||||||
CoglError **error)
|
|
||||||
{
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (ctx != NULL, NULL);
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (manager != NULL, NULL);
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (filename != NULL, NULL);
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (error == NULL || *error == NULL, NULL);
|
|
||||||
|
|
||||||
return _cogl_android_bitmap_new_from_asset (ctx, manager, filename, error);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CoglPixelFormat
|
CoglPixelFormat
|
||||||
cogl_bitmap_get_format (CoglBitmap *bitmap)
|
cogl_bitmap_get_format (CoglBitmap *bitmap)
|
||||||
{
|
{
|
||||||
|
@ -48,10 +48,6 @@ typedef struct _CoglBitmap CoglBitmap;
|
|||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef COGL_HAS_ANDROID_SUPPORT
|
|
||||||
#include <android/asset_manager.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
COGL_BEGIN_DECLS
|
COGL_BEGIN_DECLS
|
||||||
|
|
||||||
#ifdef COGL_HAS_GTYPE_SUPPORT
|
#ifdef COGL_HAS_GTYPE_SUPPORT
|
||||||
@ -91,28 +87,6 @@ CoglBitmap *
|
|||||||
cogl_bitmap_new_from_file (const char *filename,
|
cogl_bitmap_new_from_file (const char *filename,
|
||||||
CoglError **error);
|
CoglError **error);
|
||||||
|
|
||||||
#ifdef COGL_HAS_ANDROID_SUPPORT
|
|
||||||
/**
|
|
||||||
* cogl_android_bitmap_new_from_asset:
|
|
||||||
* @context: A #CoglContext
|
|
||||||
* @manager: An Android Asset Manager.
|
|
||||||
* @filename: The file name for the asset
|
|
||||||
* @error: A return location for a CoglError exception.
|
|
||||||
*
|
|
||||||
* Loads an Android asset into a newly allocated #CoglBitmap.
|
|
||||||
*
|
|
||||||
* Return value: (transfer full): A newly allocated #CoglBitmap
|
|
||||||
* holding the image data of the specified asset.
|
|
||||||
*
|
|
||||||
* Since: 2.0
|
|
||||||
*/
|
|
||||||
CoglBitmap *
|
|
||||||
cogl_android_bitmap_new_from_asset (CoglContext *context,
|
|
||||||
AAssetManager *manager,
|
|
||||||
const char *filename,
|
|
||||||
CoglError **error);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (COGL_ENABLE_EXPERIMENTAL_API)
|
#if defined (COGL_ENABLE_EXPERIMENTAL_API)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,9 +49,6 @@ typedef struct _CoglContext CoglContext;
|
|||||||
#ifdef COGL_HAS_GTYPE_SUPPORT
|
#ifdef COGL_HAS_GTYPE_SUPPORT
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef COGL_HAS_EGL_PLATFORM_ANDROID_SUPPORT
|
|
||||||
#include <android/native_window.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
COGL_BEGIN_DECLS
|
COGL_BEGIN_DECLS
|
||||||
|
|
||||||
@ -163,23 +160,6 @@ cogl_context_get_display (CoglContext *context);
|
|||||||
CoglRenderer *
|
CoglRenderer *
|
||||||
cogl_context_get_renderer (CoglContext *context);
|
cogl_context_get_renderer (CoglContext *context);
|
||||||
|
|
||||||
#ifdef COGL_HAS_EGL_PLATFORM_ANDROID_SUPPORT
|
|
||||||
/**
|
|
||||||
* cogl_android_set_native_window:
|
|
||||||
* @window: A native Android window
|
|
||||||
*
|
|
||||||
* Allows Android applications to inform Cogl of the native window
|
|
||||||
* that they have been given which Cogl can render too. On Android
|
|
||||||
* this API must be used before creating a #CoglRenderer, #CoglDisplay
|
|
||||||
* and #CoglContext.
|
|
||||||
*
|
|
||||||
* Since: 1.8
|
|
||||||
* Stability: unstable
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
cogl_android_set_native_window (ANativeWindow *window);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_is_context:
|
* cogl_is_context:
|
||||||
* @object: An object or %NULL
|
* @object: An object or %NULL
|
||||||
|
@ -60,9 +60,6 @@
|
|||||||
#ifdef COGL_HAS_EGL_PLATFORM_KMS_SUPPORT
|
#ifdef COGL_HAS_EGL_PLATFORM_KMS_SUPPORT
|
||||||
#include "cogl-winsys-egl-kms-private.h"
|
#include "cogl-winsys-egl-kms-private.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef COGL_HAS_EGL_PLATFORM_ANDROID_SUPPORT
|
|
||||||
#include "cogl-winsys-egl-android-private.h"
|
|
||||||
#endif
|
|
||||||
#ifdef COGL_HAS_GLX_SUPPORT
|
#ifdef COGL_HAS_GLX_SUPPORT
|
||||||
#include "cogl-winsys-glx-private.h"
|
#include "cogl-winsys-glx-private.h"
|
||||||
#endif
|
#endif
|
||||||
@ -179,9 +176,6 @@ static CoglWinsysVtableGetter _cogl_winsys_vtable_getters[] =
|
|||||||
#endif
|
#endif
|
||||||
#ifdef COGL_HAS_EGL_PLATFORM_KMS_SUPPORT
|
#ifdef COGL_HAS_EGL_PLATFORM_KMS_SUPPORT
|
||||||
_cogl_winsys_egl_kms_get_vtable,
|
_cogl_winsys_egl_kms_get_vtable,
|
||||||
#endif
|
|
||||||
#ifdef COGL_HAS_EGL_PLATFORM_ANDROID_SUPPORT
|
|
||||||
_cogl_winsys_egl_android_get_vtable,
|
|
||||||
#endif
|
#endif
|
||||||
_cogl_winsys_stub_get_vtable,
|
_cogl_winsys_stub_get_vtable,
|
||||||
};
|
};
|
||||||
|
@ -163,7 +163,6 @@ cogl_renderer_new (void);
|
|||||||
* @COGL_WINSYS_ID_EGL_XLIB: Use EGL with the X window system via XLib
|
* @COGL_WINSYS_ID_EGL_XLIB: Use EGL with the X window system via XLib
|
||||||
* @COGL_WINSYS_ID_EGL_WAYLAND: Use EGL with the Wayland window system
|
* @COGL_WINSYS_ID_EGL_WAYLAND: Use EGL with the Wayland window system
|
||||||
* @COGL_WINSYS_ID_EGL_KMS: Use EGL with the KMS platform
|
* @COGL_WINSYS_ID_EGL_KMS: Use EGL with the KMS platform
|
||||||
* @COGL_WINSYS_ID_EGL_ANDROID: Use EGL with the Android platform
|
|
||||||
*
|
*
|
||||||
* Identifies specific window system backends that Cogl supports.
|
* Identifies specific window system backends that Cogl supports.
|
||||||
*
|
*
|
||||||
@ -178,7 +177,6 @@ typedef enum
|
|||||||
COGL_WINSYS_ID_EGL_XLIB,
|
COGL_WINSYS_ID_EGL_XLIB,
|
||||||
COGL_WINSYS_ID_EGL_WAYLAND,
|
COGL_WINSYS_ID_EGL_WAYLAND,
|
||||||
COGL_WINSYS_ID_EGL_KMS,
|
COGL_WINSYS_ID_EGL_KMS,
|
||||||
COGL_WINSYS_ID_EGL_ANDROID,
|
|
||||||
} CoglWinsysID;
|
} CoglWinsysID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Cogl
|
|
||||||
*
|
|
||||||
* A Low Level GPU Graphics and Utilities API
|
|
||||||
*
|
|
||||||
* Copyright (C) 2011 Intel Corporation.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use, copy,
|
|
||||||
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
* of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __COGL_WINSYS_EGL_ANDROID_PRIVATE_H
|
|
||||||
#define __COGL_WINSYS_EGL_ANDROID_PRIVATE_H
|
|
||||||
|
|
||||||
#include "cogl-winsys-private.h"
|
|
||||||
|
|
||||||
const CoglWinsysVtable *
|
|
||||||
_cogl_winsys_egl_android_get_vtable (void);
|
|
||||||
|
|
||||||
#endif /* __COGL_WINSYS_EGL_ANDROID_PRIVATE_H */
|
|
@ -1,253 +0,0 @@
|
|||||||
/*
|
|
||||||
* Cogl
|
|
||||||
*
|
|
||||||
* A Low Level GPU Graphics and Utilities API
|
|
||||||
*
|
|
||||||
* Copyright (C) 2011 Intel Corporation.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use, copy,
|
|
||||||
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
* of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Robert Bragg <robert@linux.intel.com>
|
|
||||||
* Neil Roberts <neil@linux.intel.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <android/native_window.h>
|
|
||||||
|
|
||||||
#include "cogl-winsys-egl-android-private.h"
|
|
||||||
#include "cogl-winsys-egl-private.h"
|
|
||||||
#include "cogl-renderer-private.h"
|
|
||||||
#include "cogl-framebuffer-private.h"
|
|
||||||
#include "cogl-onscreen-private.h"
|
|
||||||
#include "cogl-private.h"
|
|
||||||
|
|
||||||
static const CoglWinsysEGLVtable _cogl_winsys_egl_vtable;
|
|
||||||
|
|
||||||
typedef struct _CoglDisplayAndroid
|
|
||||||
{
|
|
||||||
int egl_surface_width;
|
|
||||||
int egl_surface_height;
|
|
||||||
CoglBool have_onscreen;
|
|
||||||
} CoglDisplayAndroid;
|
|
||||||
|
|
||||||
static ANativeWindow *android_native_window;
|
|
||||||
|
|
||||||
void
|
|
||||||
cogl_android_set_native_window (ANativeWindow *window)
|
|
||||||
{
|
|
||||||
_cogl_init ();
|
|
||||||
|
|
||||||
android_native_window = window;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
|
|
||||||
{
|
|
||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
|
||||||
|
|
||||||
eglTerminate (egl_renderer->edpy);
|
|
||||||
|
|
||||||
g_slice_free (CoglRendererEGL, egl_renderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglBool
|
|
||||||
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
|
|
||||||
CoglError **error)
|
|
||||||
{
|
|
||||||
CoglRendererEGL *egl_renderer;
|
|
||||||
|
|
||||||
renderer->winsys = g_slice_new0 (CoglRendererEGL);
|
|
||||||
egl_renderer = renderer->winsys;
|
|
||||||
|
|
||||||
egl_renderer->platform_vtable = &_cogl_winsys_egl_vtable;
|
|
||||||
|
|
||||||
egl_renderer->edpy = eglGetDisplay (EGL_DEFAULT_DISPLAY);
|
|
||||||
|
|
||||||
if (!_cogl_winsys_egl_renderer_connect_common (renderer, error))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
error:
|
|
||||||
_cogl_winsys_renderer_disconnect (renderer);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglBool
|
|
||||||
_cogl_winsys_egl_context_created (CoglDisplay *display,
|
|
||||||
CoglError **error)
|
|
||||||
{
|
|
||||||
CoglRenderer *renderer = display->renderer;
|
|
||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
|
||||||
CoglDisplayEGL *egl_display = display->winsys;
|
|
||||||
CoglDisplayAndroid *android_display = egl_display->platform;
|
|
||||||
const char *error_message;
|
|
||||||
EGLint format;
|
|
||||||
|
|
||||||
if (android_native_window == NULL)
|
|
||||||
{
|
|
||||||
error_message = "No ANativeWindow window specified with "
|
|
||||||
"cogl_android_set_native_window()";
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is
|
|
||||||
* guaranteed to be accepted by ANativeWindow_setBuffersGeometry ().
|
|
||||||
* As soon as we picked a EGLConfig, we can safely reconfigure the
|
|
||||||
* ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID. */
|
|
||||||
eglGetConfigAttrib (egl_renderer->edpy,
|
|
||||||
egl_display->egl_config,
|
|
||||||
EGL_NATIVE_VISUAL_ID, &format);
|
|
||||||
|
|
||||||
ANativeWindow_setBuffersGeometry (android_native_window,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
format);
|
|
||||||
|
|
||||||
egl_display->egl_surface =
|
|
||||||
eglCreateWindowSurface (egl_renderer->edpy,
|
|
||||||
egl_display->egl_config,
|
|
||||||
(EGLNativeWindowType) android_native_window,
|
|
||||||
NULL);
|
|
||||||
if (egl_display->egl_surface == EGL_NO_SURFACE)
|
|
||||||
{
|
|
||||||
error_message = "Unable to create EGL window surface";
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_cogl_winsys_egl_make_current (display,
|
|
||||||
egl_display->egl_surface,
|
|
||||||
egl_display->egl_surface,
|
|
||||||
egl_display->egl_context))
|
|
||||||
{
|
|
||||||
error_message = "Unable to eglMakeCurrent with egl surface";
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
eglQuerySurface (egl_renderer->edpy,
|
|
||||||
egl_display->egl_surface,
|
|
||||||
EGL_WIDTH,
|
|
||||||
&android_display->egl_surface_width);
|
|
||||||
|
|
||||||
eglQuerySurface (egl_renderer->edpy,
|
|
||||||
egl_display->egl_surface,
|
|
||||||
EGL_HEIGHT,
|
|
||||||
&android_display->egl_surface_height);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
fail:
|
|
||||||
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
|
||||||
COGL_WINSYS_ERROR_CREATE_CONTEXT,
|
|
||||||
"%s", error_message);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglBool
|
|
||||||
_cogl_winsys_egl_display_setup (CoglDisplay *display,
|
|
||||||
CoglError **error)
|
|
||||||
{
|
|
||||||
CoglDisplayEGL *egl_display = display->winsys;
|
|
||||||
CoglDisplayAndroid *android_display;
|
|
||||||
|
|
||||||
android_display = g_slice_new0 (CoglDisplayAndroid);
|
|
||||||
egl_display->platform = android_display;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_cogl_winsys_egl_display_destroy (CoglDisplay *display)
|
|
||||||
{
|
|
||||||
CoglDisplayEGL *egl_display = display->winsys;
|
|
||||||
|
|
||||||
g_slice_free (CoglDisplayAndroid, egl_display->platform);
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglBool
|
|
||||||
_cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
|
|
||||||
EGLConfig egl_config,
|
|
||||||
CoglError **error)
|
|
||||||
{
|
|
||||||
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
|
|
||||||
CoglContext *context = framebuffer->context;
|
|
||||||
CoglDisplay *display = context->display;
|
|
||||||
CoglDisplayEGL *egl_display = display->winsys;
|
|
||||||
CoglDisplayAndroid *android_display = egl_display->platform;
|
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
|
||||||
|
|
||||||
if (android_display->have_onscreen)
|
|
||||||
{
|
|
||||||
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
|
||||||
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
|
|
||||||
"EGL platform only supports a single onscreen window");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
egl_onscreen->egl_surface = egl_display->egl_surface;
|
|
||||||
|
|
||||||
_cogl_framebuffer_winsys_update_size (framebuffer,
|
|
||||||
android_display->egl_surface_width,
|
|
||||||
android_display->egl_surface_height);
|
|
||||||
|
|
||||||
android_display->have_onscreen = TRUE;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const CoglWinsysEGLVtable
|
|
||||||
_cogl_winsys_egl_vtable =
|
|
||||||
{
|
|
||||||
.display_setup = _cogl_winsys_egl_display_setup,
|
|
||||||
.display_destroy = _cogl_winsys_egl_display_destroy,
|
|
||||||
.context_created = _cogl_winsys_egl_context_created,
|
|
||||||
.onscreen_init = _cogl_winsys_egl_onscreen_init,
|
|
||||||
};
|
|
||||||
|
|
||||||
const CoglWinsysVtable *
|
|
||||||
_cogl_winsys_egl_android_get_vtable (void)
|
|
||||||
{
|
|
||||||
static CoglBool vtable_inited = FALSE;
|
|
||||||
static CoglWinsysVtable vtable;
|
|
||||||
|
|
||||||
if (!vtable_inited)
|
|
||||||
{
|
|
||||||
/* The EGL_ANDROID winsys is a subclass of the EGL winsys so we
|
|
||||||
start by copying its vtable */
|
|
||||||
|
|
||||||
vtable = *_cogl_winsys_egl_get_vtable ();
|
|
||||||
|
|
||||||
vtable.id = COGL_WINSYS_ID_EGL_ANDROID;
|
|
||||||
vtable.name = "EGL_ANDROID";
|
|
||||||
|
|
||||||
vtable.renderer_connect = _cogl_winsys_renderer_connect;
|
|
||||||
vtable.renderer_disconnect = _cogl_winsys_renderer_disconnect;
|
|
||||||
|
|
||||||
vtable_inited = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return &vtable;
|
|
||||||
}
|
|
23
configure.ac
23
configure.ac
@ -915,29 +915,6 @@ AS_IF([test "x$enable_wayland_egl_server" = "xyes"],
|
|||||||
AM_CONDITIONAL(SUPPORT_WAYLAND_EGL_SERVER,
|
AM_CONDITIONAL(SUPPORT_WAYLAND_EGL_SERVER,
|
||||||
[test "x$enable_wayland_egl_server" = "xyes"])
|
[test "x$enable_wayland_egl_server" = "xyes"])
|
||||||
|
|
||||||
dnl Android EGL platform
|
|
||||||
AC_ARG_ENABLE(
|
|
||||||
[android-egl-platform],
|
|
||||||
[AC_HELP_STRING([--enable-android-egl-platform=@<:@no/yes@:>@], [Enable support for the Android egl platform @<:@default=no@:>@])],
|
|
||||||
[],
|
|
||||||
enable_android_egl_platform=no
|
|
||||||
)
|
|
||||||
AS_IF([test "x$enable_android_egl_platform" = "xyes"],
|
|
||||||
[
|
|
||||||
EGL_PLATFORM_COUNT=$((EGL_PLATFORM_COUNT+1))
|
|
||||||
NEED_EGL=yes
|
|
||||||
EGL_PLATFORMS="$EGL_PLATFORMS android"
|
|
||||||
|
|
||||||
AC_CHECK_HEADER([android/native_window.h],
|
|
||||||
[],
|
|
||||||
[AC_MSG_ERROR([Unable to locate android/native_window.h])])
|
|
||||||
|
|
||||||
COGL_DEFINES_SYMBOLS="$COGL_DEFINES_SYMBOLS COGL_HAS_EGL_PLATFORM_ANDROID_SUPPORT"
|
|
||||||
])
|
|
||||||
AM_CONDITIONAL(SUPPORT_EGL_PLATFORM_ANDROID,
|
|
||||||
[test "x$enable_android_egl_platform" = "xyes"])
|
|
||||||
|
|
||||||
|
|
||||||
dnl This should go last, since it's the default fallback and we need
|
dnl This should go last, since it's the default fallback and we need
|
||||||
dnl to check the value of $EGL_PLATFORM_COUNT here.
|
dnl to check the value of $EGL_PLATFORM_COUNT here.
|
||||||
AC_ARG_ENABLE(
|
AC_ARG_ENABLE(
|
||||||
|
@ -141,8 +141,6 @@ get_winsys_name_for_id (CoglWinsysID winsys_id)
|
|||||||
return "EGL + Wayland platform";
|
return "EGL + Wayland platform";
|
||||||
case COGL_WINSYS_ID_EGL_KMS:
|
case COGL_WINSYS_ID_EGL_KMS:
|
||||||
return "EGL + KMS platform";
|
return "EGL + KMS platform";
|
||||||
case COGL_WINSYS_ID_EGL_ANDROID:
|
|
||||||
return "EGL + Android platform";
|
|
||||||
}
|
}
|
||||||
g_return_val_if_reached ("Unknown");
|
g_return_val_if_reached ("Unknown");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user