diff options
-rw-r--r-- | cogl/Makefile.am | 1 | ||||
-rw-r--r-- | cogl/cogl-wgl.h | 98 | ||||
-rw-r--r-- | cogl/winsys/cogl-winsys-wgl.c | 8 |
3 files changed, 107 insertions, 0 deletions
diff --git a/cogl/Makefile.am b/cogl/Makefile.am index 9c01227d..d3ac8157 100644 --- a/cogl/Makefile.am +++ b/cogl/Makefile.am @@ -445,6 +445,7 @@ cogl_sources_c += \ endif if SUPPORT_WGL cogl_experimental_h += \ + $(srcdir)/cogl-wgl.h \ $(srcdir)/cogl-win32-renderer.h cogl_sources_c += \ diff --git a/cogl/cogl-wgl.h b/cogl/cogl-wgl.h new file mode 100644 index 00000000..5e5b922b --- /dev/null +++ b/cogl/cogl-wgl.h @@ -0,0 +1,98 @@ +/* + * Cogl + * + * A Low-Level GPU Graphics and Utilities API + * + * Copyright (C) 2014 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_WGL_H__ +#define __COGL_WGL_H__ + +/* NB: this is a top-level header that can be included directly but we + * want to be careful not to define __COGL_H_INSIDE__ when this is + * included internally while building Cogl itself since + * __COGL_H_INSIDE__ is used in headers to guard public vs private api + * definitions + */ +#ifndef COGL_COMPILATION + +/* Note: When building Cogl .gir we explicitly define + * __COGL_WGL_H_INSIDE__ */ +#ifndef __COGL_WGL_H_INSIDE__ +#define __COGL_WGL_H_INSIDE__ +#endif + +/* Note: When building Cogl .gir we explicitly define + * __COGL_H_INSIDE__ */ +#ifndef __COGL_H_INSIDE__ +#define __COGL_H_INSIDE__ +#define __COGL_MUST_UNDEF_COGL_H_INSIDE__ +#endif + +#endif /* COGL_COMPILATION */ + + +#include <windows.h> +#include <cogl/cogl-types.h> + +COGL_BEGIN_DECLS + +/** + * cogl_wgl_context_get_wgl_context: + * @context: A #CoglContext pointer + * + * If you have done a runtime check to determine that Cogl is using + * WGL internally then this API can be used to retrieve the HGLRC + * context handle that was setup internally. The result is undefined + * if Cogl is not using WGL. + * + * Note: The current window system backend can be checked using + * cogl_renderer_get_winsys_id(). + * + * Return value: The internally setup HGLRC context handle. + * Since: 1.18 + * Stability: unstable + */ +HGLRC +cogl_wgl_context_get_wgl_context (CoglContext *context); + +COGL_END_DECLS + +/* The gobject introspection scanner seems to parse public headers in + * isolation which means we need to be extra careful about how we + * define and undefine __COGL_H_INSIDE__ used to detect when internal + * headers are incorrectly included by developers. In the gobject + * introspection case we have to manually define __COGL_H_INSIDE__ as + * a commandline argument for the scanner which means we must be + * careful not to undefine it in a header... + */ +#ifdef __COGL_MUST_UNDEF_COGL_H_INSIDE__ +#undef __COGL_H_INSIDE__ +#undef __COGL_WGL_H_INSIDE__ +#undef __COGL_MUST_UNDEF_COGL_H_INSIDE__ +#endif + +#endif /* __COGL_WGL_H__ */ diff --git a/cogl/winsys/cogl-winsys-wgl.c b/cogl/winsys/cogl-winsys-wgl.c index d3c7c53f..63566af5 100644 --- a/cogl/winsys/cogl-winsys-wgl.c +++ b/cogl/winsys/cogl-winsys-wgl.c @@ -991,3 +991,11 @@ _cogl_winsys_wgl_get_vtable (void) return &vtable; } + +HGLRC +cogl_wgl_context_get_wgl_context (CoglContext *context) +{ + CoglDisplayWgl *display_wgl = context->display->winsys; + + return display_wgl->wgl_context; +} |