2008-04-14 Matthew Allum <mallum@openedhand.com>

* clutter/cogl/gles/cogl.c: (cogl_color):
        Disable use of color4ub, issues with latest MBX SDL (#857)

        * clutter/eglx/clutter-backend-egl.c:
        * clutter/eglx/clutter-stage-egl.c:
        * configure.ac:
        Fixup for the eglx backend to work with new backend/multistage code.
        Some issues remain in destroying stages.
This commit is contained in:
Matthew Allum 2008-04-14 15:10:22 +00:00
parent f7b53e6004
commit 77a7eaeed5
5 changed files with 31 additions and 11 deletions

View File

@ -1,3 +1,14 @@
2008-04-14 Matthew Allum <mallum@openedhand.com>
* clutter/cogl/gles/cogl.c: (cogl_color):
Disable use of color4ub, issues with latest MBX SDL (#857)
* clutter/eglx/clutter-backend-egl.c:
* clutter/eglx/clutter-stage-egl.c:
* configure.ac:
Fixup for the eglx backend to work with new backend/multistage code.
Some issues remain in destroying stages.
2008-04-14 Neil Roberts <neil@o-hand.com> 2008-04-14 Neil Roberts <neil@o-hand.com>
Bug #853 Bug #853

View File

@ -242,7 +242,12 @@ cogl_enable_depth_test (gboolean setting)
void void
cogl_color (const ClutterColor *color) cogl_color (const ClutterColor *color)
{ {
#if HAVE_GLES_COLOR4UB #if 0 /*HAVE_GLES_COLOR4UB*/
/* NOTE: seems SDK_OGLES-1.1_LINUX_PCEMULATION_2.02.22.0756 has this call
* but is broken - see #857. Therefor disabling.
*/
/* /*
* GLES 1.1 does actually have this function, it's in the header file but * GLES 1.1 does actually have this function, it's in the header file but
* missing in the reference manual (and SDK): * missing in the reference manual (and SDK):
@ -253,6 +258,8 @@ cogl_color (const ClutterColor *color)
color->green, color->green,
color->blue, color->blue,
color->alpha) ); color->alpha) );
#else #else
/* conversion can cause issues with picking on some gles implementations */ /* conversion can cause issues with picking on some gles implementations */
GE( glColor4x ((color->red << 16) / 0xff, GE( glColor4x ((color->red << 16) / 0xff,

View File

@ -7,6 +7,7 @@
#include "../clutter-private.h" #include "../clutter-private.h"
#include "../clutter-main.h" #include "../clutter-main.h"
#include "../clutter-debug.h" #include "../clutter-debug.h"
#include "../clutter-version.h"
static ClutterBackendEGL *backend_singleton = NULL; static ClutterBackendEGL *backend_singleton = NULL;
@ -107,10 +108,9 @@ clutter_backend_egl_redraw (ClutterBackend *backend,
ClutterStage *stage) ClutterStage *stage)
{ {
ClutterBackendEGL *backend_egl = CLUTTER_BACKEND_EGL (backend); ClutterBackendEGL *backend_egl = CLUTTER_BACKEND_EGL (backend);
ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend);
ClutterStageWindow *impl;
ClutterStageEGL *stage_egl; ClutterStageEGL *stage_egl;
ClutterStageX11 *stage_x11; ClutterStageX11 *stage_x11;
ClutterStageWindow *impl;
impl = _clutter_stage_get_window (stage); impl = _clutter_stage_get_window (stage);
if (!impl) if (!impl)
@ -162,7 +162,7 @@ clutter_backend_egl_dispose (GObject *gobject)
if (backend_egl->edpy) if (backend_egl->edpy)
{ {
eglTerminate (backend_egl->edpy); eglTerminate (backend_egl->edpy);
backend_egl->edpy = NULL; backend_egl->edpy = 0;
} }
G_OBJECT_CLASS (clutter_backend_egl_parent_class)->dispose (gobject); G_OBJECT_CLASS (clutter_backend_egl_parent_class)->dispose (gobject);
@ -201,8 +201,8 @@ clutter_backend_egl_get_features (ClutterBackend *backend)
"GL_VENDOR: %s\n" "GL_VENDOR: %s\n"
"GL_RENDERER: %s\n" "GL_RENDERER: %s\n"
"GL_VERSION: %s\n" "GL_VERSION: %s\n"
"EGL_VENDOR: %s\n", "EGL_VENDOR: %s\n"
"EGL_VERSION: %s\n", "EGL_VERSION: %s\n"
"EGL_EXTENSIONS: %s\n", "EGL_EXTENSIONS: %s\n",
glGetString (GL_VENDOR), glGetString (GL_VENDOR),
glGetString (GL_RENDERER), glGetString (GL_RENDERER),
@ -247,9 +247,9 @@ clutter_backend_egl_create_stage (ClutterBackend *backend,
g_object_set_data (G_OBJECT (stage), "clutter-backend", backend); g_object_set_data (G_OBJECT (stage), "clutter-backend", backend);
clutter_actor_realize (backend_x11->stage); clutter_actor_realize (stage);
if (!CLUTTER_ACTOR_IS_REALIZED (backend_x11->stage)) if (!CLUTTER_ACTOR_IS_REALIZED (stage))
{ {
g_set_error (error, CLUTTER_INIT_ERROR, g_set_error (error, CLUTTER_INIT_ERROR,
CLUTTER_INIT_ERROR_INTERNAL, CLUTTER_INIT_ERROR_INTERNAL,

View File

@ -40,7 +40,7 @@ clutter_stage_egl_unrealize (ClutterActor *actor)
CLUTTER_ACTOR_CLASS (clutter_stage_egl_parent_class)->unrealize (actor); CLUTTER_ACTOR_CLASS (clutter_stage_egl_parent_class)->unrealize (actor);
clutter_x11_trap_x_errors () clutter_x11_trap_x_errors ();
if (G_UNLIKELY (was_offscreen)) if (G_UNLIKELY (was_offscreen))
{ {
@ -48,7 +48,7 @@ clutter_stage_egl_unrealize (ClutterActor *actor)
} }
else else
{ {
if (!stage_X11->is_foreign_xwin && stage_x11->xwin != None) if (!stage_x11->is_foreign_xwin && stage_x11->xwin != None)
{ {
XDestroyWindow (stage_x11->xdpy, stage_x11->xwin); XDestroyWindow (stage_x11->xdpy, stage_x11->xwin);
stage_x11->xwin = None; stage_x11->xwin = None;
@ -211,6 +211,8 @@ clutter_stage_egl_draw_to_pixbuf (ClutterStageWindow *stage_window,
gint width, gint width,
gint height) gint height)
{ {
ClutterStage *stage = CLUTTER_STAGE (stage_window);
g_warning ("Stages of type `%s' do not support " g_warning ("Stages of type `%s' do not support "
"ClutterStageWindow::draw_to_pixbuf", "ClutterStageWindow::draw_to_pixbuf",
G_OBJECT_TYPE_NAME (stage)); G_OBJECT_TYPE_NAME (stage));

View File

@ -193,7 +193,7 @@ case $clutterbackend in
clutter_gl_header="GLES/gl.h" clutter_gl_header="GLES/gl.h"
CLUTTER_FLAVOUR="eglx" CLUTTER_FLAVOUR="eglx"
CLUTTER_STAGE_TYPE="CLUTTER_TYPE_STAGE_EGLX" CLUTTER_STAGE_TYPE="CLUTTER_TYPE_STAGE_EGL"
AC_DEFINE([HAVE_CLUTTER_EGL], 1, [Have the EGL backend]) AC_DEFINE([HAVE_CLUTTER_EGL], 1, [Have the EGL backend])
# We currently assume having egl means also having gles.. # We currently assume having egl means also having gles..