diff --git a/clutter/Makefile.am b/clutter/Makefile.am index a045be3be..fbea8920f 100644 --- a/clutter/Makefile.am +++ b/clutter/Makefile.am @@ -644,8 +644,8 @@ egl_source_h = \ $(srcdir)/egl/clutter-egl.h \ $(NULL) -egl_source_h_priv = $(srcdir)/egl/clutter-backend-eglnative.h -egl_source_c = $(srcdir)/egl/clutter-backend-eglnative.c +egl_source_h_priv = $(srcdir)/egl/clutter-backend-eglnative.h $(srcdir)/egl/clutter-stage-eglnative.h +egl_source_c = $(srcdir)/egl/clutter-backend-eglnative.c $(srcdir)/egl/clutter-stage-eglnative.c # Wayland backend rules if SUPPORT_WAYLAND diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c index a99d37491..1c0aee8b1 100644 --- a/clutter/egl/clutter-backend-eglnative.c +++ b/clutter/egl/clutter-backend-eglnative.c @@ -53,6 +53,8 @@ #include "clutter-egl.h" #endif +#include "clutter-stage-eglnative.h" + #define clutter_backend_egl_native_get_type _clutter_backend_egl_native_get_type G_DEFINE_TYPE (ClutterBackendEglNative, clutter_backend_egl_native, CLUTTER_TYPE_BACKEND); @@ -79,7 +81,7 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass) gobject_class->dispose = clutter_backend_egl_native_dispose; - backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL; + backend_class->stage_window_type = CLUTTER_TYPE_STAGE_EGL_NATIVE; } static void diff --git a/clutter/egl/clutter-stage-eglnative.c b/clutter/egl/clutter-stage-eglnative.c new file mode 100644 index 000000000..d7484bb96 --- /dev/null +++ b/clutter/egl/clutter-stage-eglnative.c @@ -0,0 +1,70 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Copyright (C) 2010 Intel Corporation. + * + * 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 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, see . + + * Authors: + * Adel Gadllah + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "clutter-stage-window.h" +#include "clutter-stage-private.h" +#include "clutter-stage-eglnative.h" +#include + +static ClutterStageWindowIface *clutter_stage_window_parent_iface = NULL; + +static void clutter_stage_window_iface_init (ClutterStageWindowIface *iface); + +#define clutter_stage_eglnative_get_type _clutter_stage_eglnative_get_type + +G_DEFINE_TYPE_WITH_CODE (ClutterStageEglNative, + clutter_stage_eglnative, + CLUTTER_TYPE_STAGE_COGL, + G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_STAGE_WINDOW, + clutter_stage_window_iface_init)); + +static gboolean +clutter_stage_eglnative_can_clip_redraws (ClutterStageWindow *stage_window) +{ + return TRUE; +} + +static void +clutter_stage_eglnative_class_init (ClutterStageEglNativeClass *klass) +{ +} + +static void +clutter_stage_eglnative_init (ClutterStageEglNative *stage_eglnative) +{ +} + +static void +clutter_stage_window_iface_init (ClutterStageWindowIface *iface) +{ + clutter_stage_window_parent_iface = g_type_interface_peek_parent (iface); + + iface->can_clip_redraws = clutter_stage_eglnative_can_clip_redraws; +} diff --git a/clutter/egl/clutter-stage-eglnative.h b/clutter/egl/clutter-stage-eglnative.h new file mode 100644 index 000000000..cc64390bc --- /dev/null +++ b/clutter/egl/clutter-stage-eglnative.h @@ -0,0 +1,59 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Copyright (C) 2010,2011 Intel Corporation. + * + * 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 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, see . + + * Authors: + * Adel Gadllah + */ + +#ifndef __CLUTTER_STAGE_EGL_NATIVE_H__ +#define __CLUTTER_STAGE_EGL_NATIVE_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "cogl/clutter-stage-cogl.h" + +#define CLUTTER_TYPE_STAGE_EGL_NATIVE (_clutter_stage_eglnative_get_type ()) +#define CLUTTER_STAGE_EGL_NATIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_STAGE_EGL_NATIVE, ClutterStageEglNative)) +#define CLUTTER_IS_STAGE_EGL_NATIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_STAGE_EGL_NATIVE)) +#define CLUTTER_STAGE_EGL_NATIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_STAGE_EGL_NATIVE, ClutterStageEglNativeClass)) +#define CLUTTER_IS_STAGE_EGL_NATIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_STAGE_EGL_NATIVE)) +#define CLUTTER_STAGE_EGL_NATIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_STAGE_EGL_NATIVE, ClutterStageEglNativeClass)) + +typedef struct _ClutterStageEglNative ClutterStageEglNative; +typedef struct _ClutterStageEglNativeClass ClutterStageEglNativeClass; + +struct _ClutterStageEglNative +{ + ClutterStageCogl parent_instance; +}; + +struct _ClutterStageEglNativeClass +{ + ClutterStageCoglClass parent_class; +}; + +GType _clutter_stage_eglnative_get_type (void) G_GNUC_CONST; + +#endif /* __CLUTTER_STAGE_EGL_NATIVE_H__ */