/* * Cogl * * An object oriented GL/GLES Abstraction/Utility Layer * * Copyright (C) 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 . * * */ #ifndef __COGL_RENDERER_PRIVATE_H #define __COGL_RENDERER_PRIVATE_H #include #include "cogl-object-private.h" #include "cogl-winsys-private.h" #include "cogl-driver.h" #include "cogl-texture-driver.h" #include "cogl-context.h" #ifdef COGL_HAS_XLIB_SUPPORT #include #endif #if defined (COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT) #include #endif struct _CoglRenderer { CoglObject _parent; CoglBool connected; CoglDriver driver_override; const CoglDriverVtable *driver_vtable; const CoglTextureDriver *texture_driver; const CoglWinsysVtable *winsys_vtable; CoglWinsysID winsys_id_override; GList *constraints; GArray *poll_fds; int poll_fds_age; /* NB: Currently a CoglContext can only be associated with 1 * CoglDisplay which itself can only be associated with 1 * CoglRenderer. * * We currently do event dispatching from the renderer but once we * have fully setup a context then we need to refer to the context * to dispatch context events. * * This gives us a back-reference to the CoglContext that can be * referenced during event dispatching. * * We always need to consider that this may be NULL. */ CoglContext *context; GList *outputs; #ifdef COGL_HAS_XLIB_SUPPORT Display *foreign_xdpy; CoglBool xlib_enable_event_retrieval; #endif CoglDriver driver; #ifndef HAVE_DIRECTLY_LINKED_GL_LIBRARY GModule *libgl_module; #endif #if defined (COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT) struct wl_display *foreign_wayland_display; struct wl_compositor *foreign_wayland_compositor; struct wl_shell *foreign_wayland_shell; #endif #ifdef COGL_HAS_SDL_SUPPORT CoglBool sdl_event_type_set; uint32_t sdl_event_type; #endif /* List of callback functions that will be given every native event */ GSList *event_filters; void *winsys; }; typedef CoglFilterReturn (* CoglNativeFilterFunc) (void *native_event, void *data); CoglFilterReturn _cogl_renderer_handle_native_event (CoglRenderer *renderer, void *event); void _cogl_renderer_add_native_filter (CoglRenderer *renderer, CoglNativeFilterFunc func, void *data); void _cogl_renderer_remove_native_filter (CoglRenderer *renderer, CoglNativeFilterFunc func, void *data); void * _cogl_renderer_get_proc_address (CoglRenderer *renderer, const char *name, CoglBool in_core); #endif /* __COGL_RENDERER_PRIVATE_H */