OSX: add multistage support
Bug #911 - OSX: add multistage support * clutter/osx/clutter-backend-osx.{c,h} (clutter_backend_osx_init_stage, clutter_backend_osx_get_stage, clutter_backend_osx_redraw, clutter_backend_osx_create_stage, clutter_backend_osx_ensure_context, clutter_backend_osx_class_init, clutter_backend_osx_dispose, ClutterGLView:drawRect:): * clutter/osx/clutter-stage-osx.{c,h} (clutter_stage_osx_realize, ClutterGLWindow:setFrameSize:): Adapt to new multistage backend API. Don't keep a pointer to default stage. Derive from ClutterActor instead of ClutterStage. Implement ClutterStageWindow interface. Paint, resize and otherwise manipulate the wrapper rather than self when necessary. (clutter_backend_post_parse): Create our singleton GL context here. We could probably create the context when the default stage is created, but I think this is more clean. * clutter/osx/clutter-event-osx.c (clutter_event_osx_translate) * clutter/osx/clutter-stage-osx.c (clutter_stage_osx_state_update, ClutterGLWindow:windowShouldClose:): * clutter/osx/clutter-stage-osx.h: Export ClutterGLWindow interface for clutter-event-osx.c to easily get the stage for NSWindow. Fill in ClutterEventAny::stage on our events. Consistently use 'stage_osx' and 'wrapper' as variable names when referring to ClutterStageOSX and ClutterStage objects respectively.
This commit is contained in:
@ -26,7 +26,7 @@
|
||||
#include <clutter/clutter-backend.h>
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@class NSOpenGLView, NSWindow;
|
||||
#import <AppKit/AppKit.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -41,11 +41,19 @@ G_BEGIN_DECLS
|
||||
typedef struct _ClutterStageOSX ClutterStageOSX;
|
||||
typedef struct _ClutterStageOSXClass ClutterStageOSXClass;
|
||||
|
||||
@interface ClutterGLWindow : NSWindow
|
||||
{
|
||||
@public
|
||||
ClutterStageOSX *stage_osx;
|
||||
}
|
||||
@end
|
||||
|
||||
struct _ClutterStageOSX
|
||||
{
|
||||
ClutterStage parent;
|
||||
ClutterActor parent;
|
||||
|
||||
ClutterBackend *backend;
|
||||
ClutterStage *wrapper;
|
||||
|
||||
NSWindow *window;
|
||||
NSOpenGLView *view;
|
||||
@ -61,12 +69,13 @@ struct _ClutterStageOSX
|
||||
|
||||
struct _ClutterStageOSXClass
|
||||
{
|
||||
ClutterStageClass parent_class;
|
||||
ClutterActorClass parent_class;
|
||||
};
|
||||
|
||||
GType clutter_stage_osx_get_type (void) G_GNUC_CONST;
|
||||
|
||||
ClutterActor* clutter_stage_osx_new (ClutterBackend *backend);
|
||||
ClutterActor* clutter_stage_osx_new (ClutterBackend *backend,
|
||||
ClutterStage *wrapper);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
Reference in New Issue
Block a user