summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cogl/Makefile.am3
-rw-r--r--cogl/cogl-bitmap-pixbuf.c97
-rw-r--r--cogl/cogl-bitmap-private.h4
-rw-r--r--cogl/cogl-bitmap.c6
-rw-r--r--cogl/cogl-bitmap.h12
-rw-r--r--cogl/cogl-blend-string.c77
-rw-r--r--cogl/cogl-blend-string.h2
-rw-r--r--cogl/cogl-context-private.h2
-rw-r--r--cogl/cogl-context.c26
-rw-r--r--cogl/cogl-context.h4
-rw-r--r--cogl/cogl-display.c4
-rw-r--r--cogl/cogl-display.h4
-rw-r--r--cogl/cogl-driver.h4
-rw-r--r--cogl/cogl-error-private.h48
-rw-r--r--cogl/cogl-error.c109
-rw-r--r--cogl/cogl-error.h175
-rw-r--r--cogl/cogl-framebuffer.c13
-rw-r--r--cogl/cogl-framebuffer.h6
-rw-r--r--cogl/cogl-gles2-context.c27
-rw-r--r--cogl/cogl-gles2.h12
-rw-r--r--cogl/cogl-internal.h2
-rw-r--r--cogl/cogl-material-compat.c8
-rw-r--r--cogl/cogl-material-compat.h17
-rw-r--r--cogl/cogl-pipeline-layer-state.c28
-rw-r--r--cogl/cogl-pipeline-layer-state.h8
-rw-r--r--cogl/cogl-pipeline-state.c28
-rw-r--r--cogl/cogl-pipeline-state.h8
-rw-r--r--cogl/cogl-renderer.c23
-rw-r--r--cogl/cogl-renderer.h11
-rw-r--r--cogl/cogl-sdl.c2
-rw-r--r--cogl/cogl-sdl.h6
-rw-r--r--cogl/cogl-texture-2d-private.h2
-rw-r--r--cogl/cogl-texture-2d-sliced.c15
-rw-r--r--cogl/cogl-texture-2d-sliced.h4
-rw-r--r--cogl/cogl-texture-2d.c74
-rw-r--r--cogl/cogl-texture-2d.h16
-rw-r--r--cogl/cogl-texture-3d.c41
-rw-r--r--cogl/cogl-texture-3d.h16
-rw-r--r--cogl/cogl-texture-rectangle.c59
-rw-r--r--cogl/cogl-texture-rectangle.h12
-rw-r--r--cogl/cogl-texture.c4
-rw-r--r--cogl/cogl-texture.h8
-rw-r--r--cogl/cogl-types.h30
-rw-r--r--cogl/cogl-wayland-server.h4
-rw-r--r--cogl/cogl-xlib-renderer-private.h2
-rw-r--r--cogl/cogl-xlib-renderer.c7
-rw-r--r--cogl/cogl.c8
-rw-r--r--cogl/cogl.h1
-rw-r--r--cogl/cogl.symbols14
-rw-r--r--cogl/cogl2-compatibility.c4
-rw-r--r--cogl/driver/gl/cogl-framebuffer-gl-private.h2
-rw-r--r--cogl/driver/gl/cogl-framebuffer-gl.c15
-rw-r--r--cogl/driver/gl/gl/cogl-driver-gl.c11
-rw-r--r--cogl/driver/gl/gles/cogl-driver-gles.c2
-rw-r--r--cogl/winsys/cogl-texture-pixmap-x11.c9
-rw-r--r--cogl/winsys/cogl-texture-pixmap-x11.h8
-rw-r--r--cogl/winsys/cogl-winsys-egl-android.c12
-rw-r--r--cogl/winsys/cogl-winsys-egl-gdl.c26
-rw-r--r--cogl/winsys/cogl-winsys-egl-kms.c37
-rw-r--r--cogl/winsys/cogl-winsys-egl-null.c12
-rw-r--r--cogl/winsys/cogl-winsys-egl-private.h10
-rw-r--r--cogl/winsys/cogl-winsys-egl-wayland.c19
-rw-r--r--cogl/winsys/cogl-winsys-egl-x11.c19
-rw-r--r--cogl/winsys/cogl-winsys-egl.c31
-rw-r--r--cogl/winsys/cogl-winsys-glx.c61
-rw-r--r--cogl/winsys/cogl-winsys-private.h14
-rw-r--r--cogl/winsys/cogl-winsys-sdl.c19
-rw-r--r--cogl/winsys/cogl-winsys-sdl2.c22
-rw-r--r--cogl/winsys/cogl-winsys-stub.c8
-rw-r--r--cogl/winsys/cogl-winsys-wgl.c26
-rw-r--r--cogl/winsys/cogl-winsys.c2
-rw-r--r--doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-docs.xml.in1
-rw-r--r--doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt12
-rw-r--r--examples/android/hello/jni/main.c2
-rw-r--r--examples/cogl-crate.c2
-rw-r--r--examples/cogl-gles2-context.c4
-rw-r--r--examples/cogl-gles2-gears.c4
-rw-r--r--examples/cogl-hello.c2
-rw-r--r--examples/cogl-info.c2
-rw-r--r--examples/cogl-msaa.c6
-rw-r--r--examples/cogl-sdl-hello.c2
-rw-r--r--examples/cogl-sdl2-hello.c2
-rw-r--r--examples/cogl-x11-foreign.c2
-rw-r--r--examples/cogl-x11-tfp.c2
-rw-r--r--examples/cogland.c6
-rw-r--r--tests/conform/test-blend-strings.c4
-rw-r--r--tests/conform/test-gles2-context.c12
-rw-r--r--tests/conform/test-just-vertex-shader.c4
-rw-r--r--tests/conform/test-multitexture.c2
-rw-r--r--tests/conform/test-pipeline-user-matrix.c2
-rw-r--r--tests/conform/test-point-sprite.c2
-rw-r--r--tests/conform/test-sub-texture.c9
-rw-r--r--tests/conform/test-texture-3d.c2
-rw-r--r--tests/conform/test-utils.c2
94 files changed, 955 insertions, 595 deletions
diff --git a/cogl/Makefile.am b/cogl/Makefile.am
index 3f9c62fe..1770a822 100644
--- a/cogl/Makefile.am
+++ b/cogl/Makefile.am
@@ -125,6 +125,7 @@ cogl_experimental_h = \
$(srcdir)/cogl2-experimental.h \
$(srcdir)/cogl2-compatibility.h \
$(srcdir)/cogl-version.h \
+ $(srcdir)/cogl-error.h \
$(NULL)
cogl_nodist_experimental_h = \
@@ -387,6 +388,8 @@ cogl_sources_c = \
$(srcdir)/cogl-magazine.c \
$(srcdir)/cogl-gles2-context-private.h \
$(srcdir)/cogl-gles2-context.c \
+ $(srcdir)/cogl-error-private.h \
+ $(srcdir)/cogl-error.c \
$(NULL)
if USE_GLIB
diff --git a/cogl/cogl-bitmap-pixbuf.c b/cogl/cogl-bitmap-pixbuf.c
index ba31c56a..0af32b11 100644
--- a/cogl/cogl-bitmap-pixbuf.c
+++ b/cogl/cogl-bitmap-pixbuf.c
@@ -30,6 +30,7 @@
#include "cogl-bitmap-private.h"
#include "cogl-context-private.h"
#include "cogl-private.h"
+#include "cogl-error-private.h"
#include <string.h>
@@ -59,7 +60,7 @@ _cogl_bitmap_get_size_from_file (const char *filename,
CoglBitmap *
_cogl_bitmap_from_file (CoglContext *ctx,
const char *filename,
- GError **error)
+ CoglError **error)
{
CFURLRef url;
CGImageSourceRef image_source;
@@ -83,10 +84,10 @@ _cogl_bitmap_from_file (CoglContext *ctx,
if (image_source == NULL)
{
/* doesn't exist, not readable, etc. */
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_FAILED,
- g_strerror (save_errno));
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_FAILED,
+ g_strerror (save_errno));
return NULL;
}
@@ -97,10 +98,10 @@ _cogl_bitmap_from_file (CoglContext *ctx,
if (type == NULL)
{
CFRelease (image_source);
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_UNKNOWN_TYPE,
- "Unknown image type");
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_UNKNOWN_TYPE,
+ "Unknown image type");
return NULL;
}
@@ -115,10 +116,10 @@ _cogl_bitmap_from_file (CoglContext *ctx,
{
/* incomplete or corrupt */
CFRelease (image);
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_CORRUPT_IMAGE,
- "Image has zero width or height");
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_CORRUPT_IMAGE,
+ "Image has zero width or height");
return NULL;
}
@@ -174,24 +175,28 @@ _cogl_bitmap_get_size_from_file (const char *filename,
CoglBitmap *
_cogl_bitmap_from_file (CoglContext *ctx,
const char *filename,
- GError **error)
+ CoglError **error)
{
static CoglUserDataKey pixbuf_key;
- GdkPixbuf *pixbuf;
- CoglBool has_alpha;
- GdkColorspace color_space;
- CoglPixelFormat pixel_format;
- int width;
- int height;
- int rowstride;
- int bits_per_sample;
- int n_channels;
- CoglBitmap *bmp;
+ GdkPixbuf *pixbuf;
+ CoglBool has_alpha;
+ GdkColorspace color_space;
+ CoglPixelFormat pixel_format;
+ int width;
+ int height;
+ int rowstride;
+ int bits_per_sample;
+ int n_channels;
+ CoglBitmap *bmp;
+ GError *glib_error = NULL;
/* Load from file using GdkPixbuf */
- pixbuf = gdk_pixbuf_new_from_file (filename, error);
+ pixbuf = gdk_pixbuf_new_from_file (filename, &glib_error);
if (pixbuf == NULL)
- return FALSE;
+ {
+ _cogl_propogate_gerror (error, glib_error);
+ return FALSE;
+ }
/* Get pixbuf properties */
has_alpha = gdk_pixbuf_get_has_alpha (pixbuf);
@@ -308,7 +313,7 @@ _cogl_bitmap_new_from_stb_pixels (CoglContext *ctx,
int stb_pixel_format,
int width,
int height,
- GError **error)
+ CoglError **error)
{
static CoglUserDataKey bitmap_data_key;
CoglBitmap *bmp;
@@ -317,10 +322,10 @@ _cogl_bitmap_new_from_stb_pixels (CoglContext *ctx,
if (pixels == NULL)
{
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_FAILED,
- "Failed to load image with stb image library");
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_FAILED,
+ "Failed to load image with stb image library");
return NULL;
}
@@ -338,11 +343,11 @@ _cogl_bitmap_new_from_stb_pixels (CoglContext *ctx,
if (!pixels)
{
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_FAILED,
- "Failed to alloc memory to convert "
- "gray_alpha to rgba8888");
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_FAILED,
+ "Failed to alloc memory to convert "
+ "gray_alpha to rgba8888");
return NULL;
}
@@ -380,7 +385,7 @@ _cogl_bitmap_new_from_stb_pixels (CoglContext *ctx,
CoglBitmap *
_cogl_bitmap_from_file (CoglContext *ctx,
const char *filename,
- GError **error)
+ CoglError **error)
{
int stb_pixel_format;
int width;
@@ -401,7 +406,7 @@ CoglBitmap *
_cogl_android_bitmap_new_from_asset (CoglContext *ctx,
AAssetManager *manager,
const char *filename,
- GError **error)
+ CoglError **error)
{
AAsset *asset;
const void *data;
@@ -415,20 +420,20 @@ _cogl_android_bitmap_new_from_asset (CoglContext *ctx,
asset = AAssetManager_open (manager, filename, AASSET_MODE_BUFFER);
if (!asset)
{
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_FAILED,
- "Failed to open asset");
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_FAILED,
+ "Failed to open asset");
return NULL;
}
data = AAsset_getBuffer (asset);
if (!data)
{
- g_set_error_literal (error,
- COGL_BITMAP_ERROR,
- COGL_BITMAP_ERROR_FAILED,
- "Failed to ::getBuffer from asset");
+ _cogl_set_error_literal (error,
+ COGL_BITMAP_ERROR,
+ COGL_BITMAP_ERROR_FAILED,
+ "Failed to ::getBuffer from asset");
return NULL;
}
diff --git a/cogl/cogl-bitmap-private.h b/cogl/cogl-bitmap-private.h
index c74c862a..e0cf11d1 100644
--- a/cogl/cogl-bitmap-private.h
+++ b/cogl/cogl-bitmap-private.h
@@ -109,14 +109,14 @@ _cogl_bitmap_convert_into_bitmap (CoglBitmap *src_bmp,
CoglBitmap *
_cogl_bitmap_from_file (CoglContext *ctx,
const char *filename,
- GError **error);
+ CoglError **error);
#ifdef COGL_HAS_ANDROID_SUPPORT
CoglBitmap *
_cogl_android_bitmap_new_from_asset (CoglContext *ctx,
AAssetManager *manager,
const char *filename,
- GError **error);
+ CoglError **error);
#endif
CoglBool
diff --git a/cogl/cogl-bitmap.c b/cogl/cogl-bitmap.c
index 62236442..1be193a8 100644
--- a/cogl/cogl-bitmap.c
+++ b/cogl/cogl-bitmap.c
@@ -225,7 +225,7 @@ _cogl_bitmap_new_shared (CoglBitmap *shared_bmp,
CoglBitmap *
cogl_bitmap_new_from_file (const char *filename,
- GError **error)
+ CoglError **error)
{
_COGL_GET_CONTEXT (ctx, NULL);
@@ -298,7 +298,7 @@ CoglBitmap *
cogl_android_bitmap_new_from_asset (CoglContext *ctx,
AAssetManager *manager,
const char *filename,
- GError **error)
+ CoglError **error)
{
_COGL_RETURN_VAL_IF_FAIL (ctx != NULL, NULL);
_COGL_RETURN_VAL_IF_FAIL (manager != NULL, NULL);
@@ -349,7 +349,7 @@ cogl_bitmap_get_buffer (CoglBitmap *bitmap)
return COGL_PIXEL_BUFFER (bitmap->buffer);
}
-GQuark
+uint32_t
cogl_bitmap_error_quark (void)
{
return g_quark_from_static_string ("cogl-bitmap-error-quark");
diff --git a/cogl/cogl-bitmap.h b/cogl/cogl-bitmap.h
index 91714d44..d82dc15b 100644
--- a/cogl/cogl-bitmap.h
+++ b/cogl/cogl-bitmap.h
@@ -55,7 +55,7 @@ typedef struct _CoglBitmap CoglBitmap;
/**
* cogl_bitmap_new_from_file:
* @filename: the file to load.
- * @error: a #GError or %NULL.
+ * @error: a #CoglError or %NULL.
*
* Loads an image file from disk. This function can be safely called from
* within a thread.
@@ -67,7 +67,7 @@ typedef struct _CoglBitmap CoglBitmap;
*/
CoglBitmap *
cogl_bitmap_new_from_file (const char *filename,
- GError **error);
+ CoglError **error);
#ifdef COGL_HAS_ANDROID_SUPPORT
/**
@@ -75,7 +75,7 @@ cogl_bitmap_new_from_file (const char *filename,
* @context: A #CoglContext
* @manager: An Android Asset Manager.
* @filename: The file name for the asset
- * @error: A return location for a GError exception.
+ * @error: A return location for a CoglError exception.
*
* Loads an Android asset into a newly allocated #CoglBitmap.
*
@@ -88,7 +88,7 @@ CoglBitmap *
cogl_android_bitmap_new_from_asset (CoglContext *context,
AAssetManager *manager,
const char *filename,
- GError **error);
+ CoglError **error);
#endif
#if defined (COGL_ENABLE_EXPERIMENTAL_API)
@@ -280,7 +280,7 @@ cogl_is_bitmap (void *object);
/**
* COGL_BITMAP_ERROR:
*
- * #GError domain for bitmap errors.
+ * #CoglError domain for bitmap errors.
*
* Since: 1.4
*/
@@ -307,7 +307,7 @@ typedef enum {
COGL_BITMAP_ERROR_CORRUPT_IMAGE
} CoglBitmapError;
-GQuark cogl_bitmap_error_quark (void);
+uint32_t cogl_bitmap_error_quark (void);
G_END_DECLS
diff --git a/cogl/cogl-blend-string.c b/cogl/cogl-blend-string.c
index 5823a1d5..a0f10a55 100644
--- a/cogl/cogl-blend-string.c
+++ b/cogl/cogl-blend-string.c
@@ -37,6 +37,7 @@
#include "cogl-context-private.h"
#include "cogl-debug.h"
#include "cogl-blend-string.h"
+#include "cogl-error-private.h"
typedef enum _ParserState
{
@@ -118,7 +119,7 @@ static CoglBlendStringFunctionInfo blend_functions[] = {
#undef DEFINE_FUNCTION
-GQuark
+uint32_t
cogl_blend_string_error_quark (void)
{
return g_quark_from_static_string ("cogl-blend-string-error-quark");
@@ -161,7 +162,7 @@ _cogl_blend_string_split_rgba_statement (CoglBlendStringStatement *statement,
static CoglBool
validate_tex_combine_statements (CoglBlendStringStatement *statements,
int n_statements,
- GError **error)
+ CoglError **error)
{
int i, j;
const char *error_string;
@@ -190,11 +191,11 @@ validate_tex_combine_statements (CoglBlendStringStatement *statements,
return TRUE;
error:
- g_set_error (error,
- COGL_BLEND_STRING_ERROR,
- detail,
- "Invalid texture combine string: %s",
- error_string);
+ _cogl_set_error (error,
+ COGL_BLEND_STRING_ERROR,
+ detail,
+ "Invalid texture combine string: %s",
+ error_string);
if (COGL_DEBUG_ENABLED (COGL_DEBUG_BLEND_STRINGS))
{
@@ -207,7 +208,7 @@ error:
static CoglBool
validate_blend_statements (CoglBlendStringStatement *statements,
int n_statements,
- GError **error)
+ CoglError **error)
{
int i, j;
const char *error_string;
@@ -275,11 +276,11 @@ validate_blend_statements (CoglBlendStringStatement *statements,
return TRUE;
error:
- g_set_error (error,
- COGL_BLEND_STRING_ERROR,
- detail,
- "Invalid blend string: %s",
- error_string);
+ _cogl_set_error (error,
+ COGL_BLEND_STRING_ERROR,
+ detail,
+ "Invalid blend string: %s",
+ error_string);
return FALSE;
}
@@ -287,7 +288,7 @@ static CoglBool
validate_statements_for_context (CoglBlendStringStatement *statements,
int n_statements,
CoglBlendStringContext context,
- GError **error)
+ CoglError **error)
{
const char *error_string;
@@ -313,13 +314,13 @@ validate_statements_for_context (CoglBlendStringStatement *statements,
return validate_tex_combine_statements (statements, n_statements, error);
error:
- g_set_error (error,
- COGL_BLEND_STRING_ERROR,
- COGL_BLEND_STRING_ERROR_INVALID_ERROR,
- "Invalid %s string: %s",
- context == COGL_BLEND_STRING_CONTEXT_BLENDING ?
- "blend" : "texture combine",
- error_string);
+ _cogl_set_error (error,
+ COGL_BLEND_STRING_ERROR,
+ COGL_BLEND_STRING_ERROR_INVALID_ERROR,
+ "Invalid %s string: %s",
+ context == COGL_BLEND_STRING_CONTEXT_BLENDING ?
+ "blend" : "texture combine",
+ error_string);
if (COGL_DEBUG_ENABLED (COGL_DEBUG_BLEND_STRINGS))
{
@@ -474,7 +475,7 @@ parse_argument (const char *string, /* original user string */
int current_arg,
CoglBlendStringArgument *arg, /* OUT */
CoglBlendStringContext context,
- GError **error)
+ CoglError **error)
{
const char *p = *ret_p;
const char *mark = NULL;
@@ -743,13 +744,13 @@ parse_argument (const char *string, /* original user string */
error:
{
int offset = p - string;
- g_set_error (error,
- COGL_BLEND_STRING_ERROR,
- COGL_BLEND_STRING_ERROR_ARGUMENT_PARSE_ERROR,
- "Syntax error for argument %d at offset %d: %s",
- current_arg,
- offset,
- error_string);
+ _cogl_set_error (error,
+ COGL_BLEND_STRING_ERROR,
+ COGL_BLEND_STRING_ERROR_ARGUMENT_PARSE_ERROR,
+ "Syntax error for argument %d at offset %d: %s",
+ current_arg,
+ offset,
+ error_string);
if (COGL_DEBUG_ENABLED (COGL_DEBUG_BLEND_STRINGS))
{
@@ -764,7 +765,7 @@ int
_cogl_blend_string_compile (const char *string,
CoglBlendStringContext context,
CoglBlendStringStatement *statements,
- GError **error)
+ CoglError **error)
{
const char *p = string;
const char *mark = NULL;
@@ -924,12 +925,12 @@ finished:
error:
{
int offset = p - string;
- g_set_error (error,
- COGL_BLEND_STRING_ERROR,
- COGL_BLEND_STRING_ERROR_PARSE_ERROR,
- "Syntax error at offset %d: %s",
- offset,
- error_string);
+ _cogl_set_error (error,
+ COGL_BLEND_STRING_ERROR,
+ COGL_BLEND_STRING_ERROR_PARSE_ERROR,
+ "Syntax error at offset %d: %s",
+ offset,
+ error_string);
if (COGL_DEBUG_ENABLED (COGL_DEBUG_BLEND_STRINGS))
{
@@ -981,7 +982,7 @@ _cogl_blend_string_test (void)
};
int i;
- GError *error = NULL;
+ CoglError *error = NULL;
for (i = 0; strings[i].string; i++)
{
CoglBlendStringStatement statements[2];
@@ -994,7 +995,7 @@ _cogl_blend_string_test (void)
g_print ("Failed to parse string:\n%s\n%s\n",
strings[i].string,
error->message);
- g_error_free (error);
+ cogl_error_free (error);
error = NULL;
continue;
}
diff --git a/cogl/cogl-blend-string.h b/cogl/cogl-blend-string.h
index 75d2f955..10e6b29a 100644
--- a/cogl/cogl-blend-string.h
+++ b/cogl/cogl-blend-string.h
@@ -126,7 +126,7 @@ CoglBool
_cogl_blend_string_compile (const char *string,
CoglBlendStringContext context,
CoglBlendStringStatement *statements,
- GError **error);
+ CoglError **error);
void
_cogl_blend_string_split_rgba_statement (CoglBlendStringStatement *statement,
diff --git a/cogl/cogl-context-private.h b/cogl/cogl-context-private.h
index 85d107c6..5060abd0 100644
--- a/cogl/cogl-context-private.h
+++ b/cogl/cogl-context-private.h
@@ -336,7 +336,7 @@ _cogl_context_get_winsys (CoglContext *context);
* return FALSE and set @error */
CoglBool
_cogl_context_update_features (CoglContext *context,
- GError **error);
+ CoglError **error);
/* Obtains the context and returns retval if NULL */
#define _COGL_GET_CONTEXT(ctxvar, retval) \
diff --git a/cogl/cogl-context.c b/cogl/cogl-context.c
index 9a02a409..530dc2b9 100644
--- a/cogl/cogl-context.c
+++ b/cogl/cogl-context.c
@@ -49,6 +49,7 @@
#include "cogl1-context.h"
#include "cogl-gpu-info-private.h"
#include "cogl-config-private.h"
+#include "cogl-error-private.h"
#include <string.h>
@@ -124,13 +125,14 @@ _cogl_context_get_winsys (CoglContext *context)
*/
CoglContext *
cogl_context_new (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglContext *context;
GLubyte default_texture_data[] = { 0xff, 0xff, 0xff, 0x0 };
CoglBitmap *default_texture_bitmap;
const CoglWinsysVtable *winsys;
int i;
+ CoglError *internal_error = NULL;
_cogl_init ();
@@ -390,18 +392,26 @@ cogl_context_new (CoglDisplay *display,
/* internal format */
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
NULL);
- /* If 3D or rectangle textures aren't supported then these should
- just silently return NULL */
+
+ /* If 3D or rectangle textures aren't supported then these will
+ * return errors that we can simply ignore. */
+ internal_error = NULL;
context->default_gl_texture_3d_tex =
cogl_texture_3d_new_from_bitmap (default_texture_bitmap,
1, /* height */
1, /* depth */
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
- NULL);
+ &internal_error);
+ if (internal_error)
+ cogl_error_free (internal_error);
+
+ internal_error = NULL;
context->default_gl_texture_rect_tex =
cogl_texture_rectangle_new_from_bitmap (default_texture_bitmap,
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
- NULL);
+ &internal_error);
+ if (internal_error)
+ cogl_error_free (internal_error);
cogl_object_unref (default_texture_bitmap);
@@ -532,7 +542,7 @@ _cogl_context_free (CoglContext *context)
CoglContext *
_cogl_context_get_default (void)
{
- GError *error = NULL;
+ CoglError *error = NULL;
/* Create if doesn't exist yet */
if (_cogl_context == NULL)
{
@@ -541,7 +551,7 @@ _cogl_context_get_default (void)
{
g_warning ("Failed to create default context: %s",
error->message);
- g_error_free (error);
+ cogl_error_free (error);
}
}
@@ -569,7 +579,7 @@ cogl_egl_context_get_egl_display (CoglContext *context)
CoglBool
_cogl_context_update_features (CoglContext *context,
- GError **error)
+ CoglError **error)
{
return context->driver_vtable->update_features (context, error);
}
diff --git a/cogl/cogl-context.h b/cogl/cogl-context.h
index d09f46d7..17fb7f45 100644
--- a/cogl/cogl-context.h
+++ b/cogl/cogl-context.h
@@ -94,7 +94,7 @@ G_BEGIN_DECLS
/**
* cogl_context_new:
* @display: A #CoglDisplay pointer
- * @error: A GError return location.
+ * @error: A CoglError return location.
*
* Creates a new #CoglContext which acts as an application sandbox
* for any state objects that are allocated.
@@ -105,7 +105,7 @@ G_BEGIN_DECLS
*/
CoglContext *
cogl_context_new (CoglDisplay *display,
- GError **error);
+ CoglError **error);
/**
* cogl_context_get_display:
diff --git a/cogl/cogl-display.c b/cogl/cogl-display.c
index f6e01bec..ec5f88a0 100644
--- a/cogl/cogl-display.c
+++ b/cogl/cogl-display.c
@@ -83,7 +83,7 @@ cogl_display_new (CoglRenderer *renderer,
CoglOnscreenTemplate *onscreen_template)
{
CoglDisplay *display = g_slice_new0 (CoglDisplay);
- GError *error = NULL;
+ CoglError *error = NULL;
_cogl_init ();
@@ -119,7 +119,7 @@ cogl_display_get_renderer (CoglDisplay *display)
CoglBool
cogl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
const CoglWinsysVtable *winsys;
diff --git a/cogl/cogl-display.h b/cogl/cogl-display.h
index c8cf7be6..70bbf275 100644
--- a/cogl/cogl-display.h
+++ b/cogl/cogl-display.h
@@ -124,7 +124,7 @@ cogl_display_get_renderer (CoglDisplay *display);
/**
* cogl_display_setup:
* @display: a #CoglDisplay
- * @error: return location for a #GError
+ * @error: return location for a #CoglError
*
* Explicitly sets up the given @display object. Use of this api is
* optional since Cogl will internally setup the display if not done
@@ -154,7 +154,7 @@ cogl_display_get_renderer (CoglDisplay *display);
*/
CoglBool
cogl_display_setup (CoglDisplay *display,
- GError **error);
+ CoglError **error);
#ifdef COGL_HAS_EGL_PLATFORM_GDL_SUPPORT
/**
diff --git a/cogl/cogl-driver.h b/cogl/cogl-driver.h
index 7b82628d..63b737d3 100644
--- a/cogl/cogl-driver.h
+++ b/cogl/cogl-driver.h
@@ -46,11 +46,11 @@ struct _CoglDriverVtable
CoglBool
(* update_features) (CoglContext *context,
- GError **error);
+ CoglError **error);
CoglBool
(* offscreen_allocate) (CoglOffscreen *offscreen,
- GError **error);
+ CoglError **error);
void
(* offscreen_free) (CoglOffscreen *offscreen);
diff --git a/cogl/cogl-error-private.h b/cogl/cogl-error-private.h
new file mode 100644
index 00000000..85b64f7f
--- /dev/null
+++ b/cogl/cogl-error-private.h
@@ -0,0 +1,48 @@
+/*
+ * Cogl
+ *
+ * An object oriented GL/GLES Abstraction/Utility Layer
+ *
+ * Copyright (C) 2012 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __COGL_ERROR_PRIVATE_H__
+#define __COGL_ERROR_PRIVATE_H__
+
+#include "cogl-error.h"
+
+void
+_cogl_set_error (CoglError **error,
+ uint32_t domain,
+ int code,
+ const char *format,
+ ...) G_GNUC_PRINTF (4, 5);
+
+void
+_cogl_set_error_literal (CoglError **error,
+ uint32_t domain,
+ int code,
+ const char *message);
+
+void
+_cogl_propogate_gerror (CoglError **dest,
+ GError *src);
+
+#define _cogl_clear_error(X) g_clear_error ((GError **)X)
+
+#endif /* __COGL_ERROR_PRIVATE_H__ */
diff --git a/cogl/cogl-error.c b/cogl/cogl-error.c
new file mode 100644
index 00000000..969c85c0
--- /dev/null
+++ b/cogl/cogl-error.c
@@ -0,0 +1,109 @@
+/*
+ * 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors:
+ * Robert Bragg <robert@linux.intel.com>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "cogl-types.h"
+#include "cogl-util.h"
+#include "cogl-error-private.h"
+
+#include <glib.h>
+
+void
+cogl_error_free (CoglError *error)
+{
+ g_error_free ((GError *)error);
+}
+
+CoglError *
+cogl_error_copy (CoglError *error)
+{
+ return (CoglError *)g_error_copy ((GError *)error);
+}
+
+CoglBool
+cogl_error_matches (CoglError *error,
+ uint32_t domain,
+ int code)
+{
+ return g_error_matches ((GError *)error, domain, code);
+}
+
+#define ERROR_OVERWRITTEN_WARNING \
+ "CoglError set over the top of a previous CoglError or " \
+ "uninitialized memory.\nThis indicates a bug in someone's " \
+ "code. You must ensure an error is NULL before it's set.\n" \
+ "The overwriting error message was: %s"
+
+void
+_cogl_set_error (CoglError **error,
+ uint32_t domain,
+ int code,
+ const char *format,
+ ...)
+{
+ GError *new;
+
+ va_list args;
+
+ va_start (args, format);
+
+ if (error == NULL)
+ {
+ g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
+ va_end (args);
+ return;
+ }
+
+ new = g_error_new_valist (domain, code, format, args);
+ va_end (args);
+
+ if (*error == NULL)
+ *error = (CoglError *)new;
+ else
+ g_warning (ERROR_OVERWRITTEN_WARNING, new->message);
+}
+
+void
+_cogl_set_error_literal (CoglError **error,
+ uint32_t domain,
+ int code,
+ const char *message)
+{
+ _cogl_set_error (error, domain, code, "%s", message);
+}
+
+void
+_cogl_propogate_gerror (CoglError **dest,
+ GError *src)
+{
+ _COGL_RETURN_IF_FAIL (src != NULL);
+
+ _cogl_set_error_literal (dest, src->domain, src->code, src->message);
+ g_error_free (src);
+}
diff --git a/cogl/cogl-error.h b/cogl/cogl-error.h
new file mode 100644
index 00000000..965c43db
--- /dev/null
+++ b/cogl/cogl-error.h
@@ -0,0 +1,175 @@
+/*
+ * Cogl
+ *
+ * An object oriented GL/GLES Abstraction/Utility Layer
+ *
+ * Copyright (C) 2012 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(__COGL_H_INSIDE__) && !defined(COGL_COMPILATION)
+#error "Only <cogl/cogl.h> can be included directly."
+#endif
+
+#ifndef __COGL_ERROR_H__
+#define __COGL_ERROR_H__
+
+#include "cogl-types.h"
+
+/**
+ * SECTION:cogl-error
+ * @short_description: A way for Cogl to throw exceptions
+ *
+ * As a general rule Cogl shields non-recoverable errors from
+ * developers, such as most heap allocation failures (unless for
+ * exceptionally large resources which we might reasonably expect to
+ * fail) and this reduces the burdon on developers.
+ *
+ * There are some Cogl apis though that can fail for exceptional
+ * reasons that can also potentially be recovered from at runtime
+ * and for these apis we use a standard convention for reporting
+ * runtime recoverable errors.
+ *
+ * As an example if we look at the cogl_context_new() api which
+ * takes an error argument:
+ * |[
+ * CoglContext *
+ * cogl_context_new (CoglDisplay *display, CoglError **error);
+ * ]|
+ *
+ * A caller interested in catching any runtime error when creating a
+ * new #CoglContext would pass the address of a #CoglError pointer
+ * that has first been initialized to %NULL as follows:
+ *
+ * |[
+ * CoglError *error = NULL;
+ * CoglContext *context;
+ *
+ * context = cogl_context_new (NULL, &error);
+ * ]|
+ *
+ * The return status should usually be enough to determine if there
+ * was an error set (in this example we can check if context == %NULL)
+ * but if it's not possible to tell from the function's return status
+ * you can instead look directly at the error pointer which you
+ * initialized to %NULL. In this example we now check the error,
+ * report any error to the user, free the error and then simply
+ * abort without attempting to recover.
+ *
+ * |[
+ * if (context == NULL)
+ * {
+ * fprintf (stderr, "Failed to create a Cogl context: %s\n",
+ * error->message);
+ * cogl_error_free (error);
+ * abort ();
+ * }
+ * ]|
+ *
+ * All Cogl APIs that accept an error argument can also be passed a
+ * %NULL pointer. In this case if an exceptional error condition is hit
+ * then Cogl will simply log the error message and abort the
+ * application. This can be compared to language execeptions where the
+ * developer has not attempted to catch the exception. This means the
+ * above example is essentially redundant because it's what Cogl would
+ * have done automatically and so, similarly, if your application has
+ * no way to recover from a particular error you might just as well
+ * pass a %NULL #CoglError pointer to save a bit of typing.
+ *
+ * <note>If you are used to using the GLib API you will probably
+ * recognize that #CoglError is just like a #GError. In fact if Cogl
+ * has been built with --enable-glib then it is safe to cast a
+ * #CoglError to a #GError.</note>
+ *
+ * <note>An important detail to be aware of if you are used to using
+ * GLib's GError API is that Cogl deviates from the GLib GError
+ * conventions in one noteable way which is that a %NULL error pointer
+ * does not mean you want to ignore the details of an error, it means
+ * you are not trying to catch any exceptional errors the function might
+ * throw which will result in the program aborting with a log message
+ * if an error is thrown.</note>
+ */
+
+#ifdef COGL_HAS_GLIB_SUPPORT
+#define CoglError GError
+#else
+/**
+ * CoglError:
+ * @domain: A high-level domain identifier for the error
+ * @code: A specific error code within a specified domain
+ * @message: A human readable error message
+ */
+typedef struct _CoglError
+{
+ uint32_t domain;
+ int code;
+ char *message;
+} CoglError;
+#endif /* COGL_HAS_GLIB_SUPPORT */
+
+/**
+ * cogl_error_free:
+ * @error: A #CoglError thrown by the Cogl api
+ *
+ * Frees a #CoglError and associated resources.
+ */
+void
+cogl_error_free (CoglError *error);
+
+/**
+ * cogl_error_copy:
+ * @error: A #CoglError thrown by the Cogl api
+ *
+ * Makes a copy of @error which can later be freed using
+ * cogl_error_free().
+ *
+ * Return value: A newly allocated #CoglError initialized to match the
+ * contents of @error.
+ */
+CoglError *
+cogl_error_copy (CoglError *error);
+
+/**
+ * cogl_error_matches:
+ * @error: A #CoglError thrown by the Cogl api or %NULL
+ *
+ * Returns %TRUE if error matches domain and code, %FALSE otherwise.
+ * In particular, when error is %NULL, FALSE will be returned.
+ *
+ * Return value: whether the @error corresponds to the given @domain
+ * and @code.
+ */
+CoglBool
+cogl_error_matches (CoglError *error,
+ uint32_t domain,
+ int code);
+
+/**
+ * COGL_GLIB_ERROR:
+ * @COGL_ERROR: A #CoglError thrown by the Cogl api or %NULL
+ *
+ * Simply casts a #CoglError to a #CoglError
+ *
+ * If Cogl is built with GLib support then it can safely be assumed
+ * that a CoglError is a GError and can be used directly with the
+ * GError api.
+ */
+#ifdef COGL_HAS_GLIB_SUPPORT
+#define COGL_GLIB_ERROR(COGL_ERROR) ((CoglError *)COGL_ERROR)
+#endif
+
+#endif /* __COGL_ERROR_H__ */
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index 3b927c22..b4dfc910 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -49,6 +49,7 @@
#include "cogl-private.h"
#include "cogl-primitives-private.h"
#include "cogl-path-private.h"
+#include "cogl-error-private.h"
typedef struct _CoglFramebufferStackEntry
{
@@ -75,7 +76,7 @@ COGL_OBJECT_DEFINE_DEPRECATED_REF_COUNTING (offscreen);
* abstract class manually.
*/
-GQuark
+uint32_t
cogl_framebuffer_error_quark (void)
{
return g_quark_from_static_string ("cogl-framebuffer-error-quark");
@@ -652,7 +653,7 @@ _cogl_offscreen_free (CoglOffscreen *offscreen)
CoglBool
cogl_framebuffer_allocate (CoglFramebuffer *framebuffer,
- GError **error)
+ CoglError **error)
{
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
const CoglWinsysVtable *winsys = _cogl_framebuffer_get_winsys (framebuffer);
@@ -664,10 +665,10 @@ cogl_framebuffer_allocate (CoglFramebuffer *framebuffer,
{
if (framebuffer->config.depth_texture_enabled)
{
- g_set_error (error, COGL_FRAMEBUFFER_ERROR,
- COGL_FRAMEBUFFER_ERROR_ALLOCATE,
- "Can't allocate onscreen framebuffer with a "
- "texture based depth buffer");
+ _cogl_set_error (error, COGL_FRAMEBUFFER_ERROR,
+ COGL_FRAMEBUFFER_ERROR_ALLOCATE,
+ "Can't allocate onscreen framebuffer with a "
+ "texture based depth buffer");
return FALSE;
}
diff --git a/cogl/cogl-framebuffer.h b/cogl/cogl-framebuffer.h
index b7563b62..2358304c 100644
--- a/cogl/cogl-framebuffer.h
+++ b/cogl/cogl-framebuffer.h
@@ -98,7 +98,7 @@ typedef struct _CoglFramebuffer CoglFramebuffer;
/**
* cogl_framebuffer_allocate:
* @framebuffer: A #CoglFramebuffer
- * @error: A pointer to a #GError for returning exceptions.
+ * @error: A pointer to a #CoglError for returning exceptions.
*
* Explicitly allocates a configured #CoglFramebuffer allowing developers to
* check and handle any errors that might arise from an unsupported
@@ -117,7 +117,7 @@ typedef struct _CoglFramebuffer CoglFramebuffer;
*/
CoglBool
cogl_framebuffer_allocate (CoglFramebuffer *framebuffer,
- GError **error);
+ CoglError **error);
/**
* cogl_framebuffer_get_width:
@@ -1782,7 +1782,7 @@ cogl_get_draw_framebuffer (void);
/* XXX: Note these are defined outside the COGL_ENABLE_EXPERIMENTAL_API guard since
* otherwise the glib-mkenums stuff will get upset. */
-GQuark
+uint32_t
cogl_framebuffer_error_quark (void);
/**
diff --git a/cogl/cogl-gles2-context.c b/cogl/cogl-gles2-context.c
index 14f091c6..c8d0e20b 100644
--- a/cogl/cogl-gles2-context.c
+++ b/cogl/cogl-gles2-context.c
@@ -45,6 +45,7 @@
#include "cogl-swap-chain-private.h"
#include "cogl-texture-2d-private.h"
#include "cogl-pipeline-opengl-private.h"
+#include "cogl-error-private.h"
static void _cogl_gles2_context_free (CoglGLES2Context *gles2_context);
@@ -88,7 +89,7 @@ enum {
RESTORE_FB_FROM_ONSCREEN,
};
-GQuark
+uint32_t
_cogl_gles2_context_error_quark (void)
{
return g_quark_from_static_string ("cogl-gles2-context-error-quark");
@@ -1556,14 +1557,14 @@ free_texture_object_data (CoglGLES2TextureObjectData *data)
}
CoglGLES2Context *
-cogl_gles2_context_new (CoglContext *ctx, GError **error)
+cogl_gles2_context_new (CoglContext *ctx, CoglError **error)
{
CoglGLES2Context *gles2_ctx;
const CoglWinsysVtable *winsys;
if (!cogl_has_feature (ctx, COGL_FEATURE_ID_GLES2_CONTEXT))
{
- g_set_error (error, COGL_GLES2_CONTEXT_ERROR,
+ _cogl_set_error (error, COGL_GLES2_CONTEXT_ERROR,
COGL_GLES2_CONTEXT_ERROR_UNSUPPORTED,
"Backend doesn't support creating GLES2 contexts");
@@ -1683,11 +1684,11 @@ cogl_gles2_context_get_vtable (CoglGLES2Context *gles2_ctx)
static CoglGLES2Offscreen *
_cogl_gles2_offscreen_allocate (CoglOffscreen *offscreen,
CoglGLES2Context *gles2_context,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (offscreen);
const CoglWinsysVtable *winsys;
- GError *internal_error = NULL;
+ CoglError *internal_error = NULL;
CoglGLES2Offscreen *gles2_offscreen;
if (!framebuffer->allocated &&
@@ -1710,8 +1711,8 @@ _cogl_gles2_offscreen_allocate (CoglOffscreen *offscreen,
{
winsys->restore_context (framebuffer->context);
- g_error_free (internal_error);
- g_set_error (error, COGL_FRAMEBUFFER_ERROR,
+ cogl_error_free (internal_error);
+ _cogl_set_error (error, COGL_FRAMEBUFFER_ERROR,
COGL_FRAMEBUFFER_ERROR_ALLOCATE,
"Failed to bind gles2 context to create framebuffer");
return NULL;
@@ -1732,7 +1733,7 @@ _cogl_gles2_offscreen_allocate (CoglOffscreen *offscreen,
g_slice_free (CoglGLES2Offscreen, gles2_offscreen);
- g_set_error (error, COGL_FRAMEBUFFER_ERROR,
+ _cogl_set_error (error, COGL_FRAMEBUFFER_ERROR,
COGL_FRAMEBUFFER_ERROR_ALLOCATE,
"Failed to create an OpenGL framebuffer object");
return NULL;
@@ -1763,10 +1764,10 @@ cogl_push_gles2_context (CoglContext *ctx,
CoglGLES2Context *gles2_ctx,
CoglFramebuffer *read_buffer,
CoglFramebuffer *write_buffer,
- GError **error)
+ CoglError **error)
{
const CoglWinsysVtable *winsys = ctx->display->renderer->winsys_vtable;
- GError *internal_error = NULL;
+ CoglError *internal_error = NULL;
_COGL_RETURN_VAL_IF_FAIL (gles2_ctx != NULL, FALSE);
@@ -1845,8 +1846,8 @@ cogl_push_gles2_context (CoglContext *ctx,
{
winsys->restore_context (ctx);
- g_error_free (internal_error);
- g_set_error (error, COGL_GLES2_CONTEXT_ERROR,
+ cogl_error_free (internal_error);
+ _cogl_set_error (error, COGL_GLES2_CONTEXT_ERROR,
COGL_GLES2_CONTEXT_ERROR_DRIVER,
"Driver failed to make GLES2 context current");
return FALSE;
@@ -1930,7 +1931,7 @@ cogl_gles2_texture_2d_new_from_handle (CoglContext *ctx,
int width,
int height,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
return cogl_texture_2d_new_from_foreign (ctx,
handle,
diff --git a/cogl/cogl-gles2.h b/cogl/cogl-gles2.h
index 34467b2e..8174e7b6 100644
--- a/cogl/cogl-gles2.h
+++ b/cogl/cogl-gles2.h
@@ -124,7 +124,7 @@ struct _CoglGLES2Vtable
#undef COGL_EXT_END
};
-GQuark
+uint32_t
_cogl_gles2_context_error_quark (void);
/**
@@ -156,7 +156,7 @@ typedef enum { /*< prefix=COGL_GLES2_CONTEXT_ERROR >*/
/**
* cogl_gles2_context_new:
* @ctx: A #CoglContext
- * @error: A pointer to a #GError for returning exceptions
+ * @error: A pointer to a #CoglError for returning exceptions
*
* Allocates a new OpenGLES 2.0 context that can be used to render to
* #CoglOffscreen framebuffers (Rendering to #CoglOnscreen
@@ -183,7 +183,7 @@ typedef enum { /*< prefix=COGL_GLES2_CONTEXT_ERROR >*/
* Stability: unstable
*/
CoglGLES2Context *
-cogl_gles2_context_new (CoglContext *ctx, GError **error);
+cogl_gles2_context_new (CoglContext *ctx, CoglError **error);
/**
* cogl_gles2_context_get_vtable:
@@ -215,7 +215,7 @@ cogl_gles2_context_get_vtable (CoglGLES2Context *gles2_ctx);
* @write_buffer: A #CoglFramebuffer to access for drawing operations
* such as glDrawArrays. (must be a #CoglOffscreen
* framebuffer currently)
- * @error: A pointer to a #GError for returning exceptions
+ * @error: A pointer to a #CoglError for returning exceptions
*
* Pushes the given @gles2_ctx onto a stack associated with @ctx so
* that the OpenGLES 2.0 api can be used instead of the Cogl
@@ -239,7 +239,7 @@ cogl_push_gles2_context (CoglContext *ctx,
CoglGLES2Context *gles2_ctx,
CoglFramebuffer *read_buffer,
CoglFramebuffer *write_buffer,
- GError **error);
+ CoglError **error);
/**
* cogl_pop_gles2_context:
@@ -306,7 +306,7 @@ cogl_gles2_texture_2d_new_from_handle (CoglContext *ctx,
int width,
int height,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_gles2_texture_get_handle:
diff --git a/cogl/cogl-internal.h b/cogl/cogl-internal.h
index 58813159..88fd1885 100644
--- a/cogl/cogl-internal.h
+++ b/cogl/cogl-internal.h
@@ -118,7 +118,7 @@ typedef enum _CoglPipelineEvalFlags
CoglBool
_cogl_check_extension (const char *name, const char *ext);
-GQuark
+uint32_t
_cogl_driver_error_quark (void);
#endif /* __COGL_INTERNAL_H */
diff --git a/cogl/cogl-material-compat.c b/cogl/cogl-material-compat.c
index c7519d98..af562236 100644
--- a/cogl/cogl-material-compat.c
+++ b/cogl/cogl-material-compat.c
@@ -192,7 +192,7 @@ cogl_material_set_alpha_test_function (CoglMaterial *material,
CoglBool
cogl_material_set_blend (CoglMaterial *material,
const char *blend_string,
- GError **error)
+ CoglError **error)
{
return cogl_pipeline_set_blend (COGL_PIPELINE (material),
blend_string,
@@ -252,7 +252,7 @@ CoglBool
cogl_material_set_layer_combine (CoglMaterial *material,
int layer_index,
const char *blend_string,
- GError **error)
+ CoglError **error)
{
return cogl_pipeline_set_layer_combine (COGL_PIPELINE (material),
layer_index,
@@ -331,7 +331,7 @@ CoglBool
cogl_material_set_layer_point_sprite_coords_enabled (CoglMaterial *material,
int layer_index,
CoglBool enable,
- GError **error)
+ CoglError **error)
{
CoglPipeline *pipeline = COGL_PIPELINE (material);
return cogl_pipeline_set_layer_point_sprite_coords_enabled (pipeline,
@@ -439,7 +439,7 @@ cogl_material_foreach_layer (CoglMaterial *material,
CoglBool
cogl_material_set_depth_state (CoglMaterial *material,
const CoglDepthState *state,
- GError **error)
+ CoglError **error)
{
return cogl_pipeline_set_depth_state (COGL_PIPELINE (material),
state, error);
diff --git a/cogl/cogl-material-compat.h b/cogl/cogl-material-compat.h
index 964fa4a6..756e8335 100644
--- a/cogl/cogl-material-compat.h
+++ b/cogl/cogl-material-compat.h
@@ -31,6 +31,7 @@
#include <cogl/cogl-types.h>
#include <cogl/cogl-matrix.h>
#include <cogl/cogl-depth-state.h>
+#include <cogl/cogl-error.h>
G_BEGIN_DECLS
@@ -508,7 +509,7 @@ cogl_material_set_alpha_test_function (CoglMaterial *material,
* @material: A #CoglMaterial object
* @blend_string: A <link linkend="cogl-Blend-Strings">Cogl blend string</link>
* describing the desired blend function.
- * @error: return location for a #GError that may report lack of driver
+ * @error: return location for a #CoglError that may report lack of driver
* support if you give separate blend string statements for the alpha
* channel and RGB channels since some drivers, or backends such as
* GLES 1.1, don't support this feature. May be %NULL, in which case a
@@ -590,7 +591,7 @@ cogl_material_set_alpha_test_function (CoglMaterial *material,
CoglBool
cogl_material_set_blend (CoglMaterial *material,
const char *blend_string,
- GError **error);
+ CoglError **error);
/**
* cogl_material_set_blend_constant:
@@ -746,7 +747,7 @@ cogl_material_remove_layer (CoglMaterial *material,
* @layer_index: Specifies the layer you want define a combine function for
* @blend_string: A <link linkend="cogl-Blend-Strings">Cogl blend string</link>
* describing the desired texture combine function.
- * @error: A #GError that may report parse errors or lack of GPU/driver
+ * @error: A #CoglError that may report parse errors or lack of GPU/driver
* support. May be %NULL, in which case a warning will be printed out if an
* error is encountered.
*
@@ -836,7 +837,7 @@ CoglBool
cogl_material_set_layer_combine (CoglMaterial *material,
int layer_index,
const char *blend_string,
- GError **error);
+ CoglError **error);
/**
* cogl_material_set_layer_combine_constant:
@@ -997,7 +998,7 @@ cogl_material_set_layer_filters (CoglMaterial *material,
* @material: a #CoglHandle to a material.
* @layer_index: the layer number to change.
* @enable: whether to enable point sprite coord generation.
- * @error: A return location for a GError, or NULL to ignore errors.
+ * @error: A return location for a CoglError, or NULL to ignore errors.
*
* When rendering points, if @enable is %TRUE then the texture
* coordinates for this layer will be replaced with coordinates that
@@ -1017,7 +1018,7 @@ CoglBool
cogl_material_set_layer_point_sprite_coords_enabled (CoglMaterial *material,
int layer_index,
CoglBool enable,
- GError **error);
+ CoglError **error);
/**
* cogl_material_get_layer_point_sprite_coords_enabled:
@@ -1199,7 +1200,7 @@ cogl_material_layer_get_wrap_mode_p (CoglMaterialLayer *layer);
* cogl_material_set_depth_state:
* @material: A #CoglMaterial object
* @state: A #CoglDepthState struct
- * @error: A #GError to report failures to setup the given @state.
+ * @error: A #CoglError to report failures to setup the given @state.
*
* This commits all the depth state configured in @state struct to the
* given @material. The configuration values are copied into the
@@ -1218,7 +1219,7 @@ cogl_material_layer_get_wrap_mode_p (CoglMaterialLayer *layer);
CoglBool
cogl_material_set_depth_state (CoglMaterial *material,
const CoglDepthState *state,
- GError **error);
+ CoglError **error);
/**
* cogl_material_get_depth_state:
diff --git a/cogl/cogl-pipeline-layer-state.c b/cogl/cogl-pipeline-layer-state.c
index 19bece53..b69ff464 100644
--- a/cogl/cogl-pipeline-layer-state.c
+++ b/cogl/cogl-pipeline-layer-state.c
@@ -37,6 +37,7 @@
#include "cogl-snippet-private.h"
#include "cogl-texture-private.h"
#include "cogl-pipeline-layer-state-private.h"
+#include "cogl-error-private.h"
#include "string.h"
#if 0
@@ -734,7 +735,7 @@ CoglBool
cogl_pipeline_set_layer_point_sprite_coords_enabled (CoglPipeline *pipeline,
int layer_index,
CoglBool enable,
- GError **error)
+ CoglError **error)
{
CoglPipelineLayerState change =
COGL_PIPELINE_LAYER_STATE_POINT_SPRITE_COORDS;
@@ -752,9 +753,11 @@ cogl_pipeline_set_layer_point_sprite_coords_enabled (CoglPipeline *pipeline,
{
if (error)
{
- g_set_error (error, COGL_ERROR, COGL_ERROR_UNSUPPORTED,
- "Point sprite texture coordinates are enabled "
- "for a layer but the GL driver does not support it.");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Point sprite texture coordinates are enabled for "
+ "a layer but the GL driver does not support it.");
}
else
{
@@ -1168,7 +1171,7 @@ CoglBool
cogl_pipeline_set_layer_combine (CoglPipeline *pipeline,
int layer_index,
const char *combine_description,
- GError **error)
+ CoglError **error)
{
CoglPipelineLayerState state = COGL_PIPELINE_LAYER_STATE_COMBINE;
CoglPipelineLayer *authority;
@@ -1177,7 +1180,6 @@ cogl_pipeline_set_layer_combine (CoglPipeline *pipeline,
CoglBlendStringStatement split[2];
CoglBlendStringStatement *rgb;
CoglBlendStringStatement *a;
- GError *internal_error = NULL;
int count;
_COGL_RETURN_VAL_IF_FAIL (cogl_is_pipeline (pipeline), FALSE);
@@ -1198,19 +1200,9 @@ cogl_pipeline_set_layer_combine (CoglPipeline *pipeline,
_cogl_blend_string_compile (combine_description,
COGL_BLEND_STRING_CONTEXT_TEXTURE_COMBINE,
statements,
- &internal_error);
+ error);
if (!count)
- {
- if (error)
- g_propagate_error (error, internal_error);
- else
- {
- g_warning ("Cannot compile combine description: %s\n",
- internal_error->message);
- g_error_free (internal_error);
- }
- return FALSE;
- }
+ return FALSE;
if (statements[0].mask == COGL_BLEND_STRING_CHANNEL_MASK_RGBA)
{
diff --git a/cogl/cogl-pipeline-layer-state.h b/cogl/cogl-pipeline-layer-state.h
index 39a47578..62f09f69 100644
--- a/cogl/cogl-pipeline-layer-state.h
+++ b/cogl/cogl-pipeline-layer-state.h
@@ -208,7 +208,7 @@ cogl_pipeline_remove_layer (CoglPipeline *pipeline,
* @layer_index: Specifies the layer you want define a combine function for
* @blend_string: A <link linkend="cogl-Blend-Strings">Cogl blend string</link>
* describing the desired texture combine function.
- * @error: A #GError that may report parse errors or lack of GPU/driver
+ * @error: A #CoglError that may report parse errors or lack of GPU/driver
* support. May be %NULL, in which case a warning will be printed out if an
* error is encountered.
*
@@ -299,7 +299,7 @@ CoglBool
cogl_pipeline_set_layer_combine (CoglPipeline *pipeline,
int layer_index,
const char *blend_string,
- GError **error);
+ CoglError **error);
/**
* cogl_pipeline_set_layer_combine_constant:
@@ -416,7 +416,7 @@ cogl_pipeline_get_layer_mag_filter (CoglPipeline *pipeline,
* @pipeline: A #CoglPipeline object
* @layer_index: the layer number to change.
* @enable: whether to enable point sprite coord generation.
- * @error: A return location for a GError, or NULL to ignore errors.
+ * @error: A return location for a CoglError, or NULL to ignore errors.
*
* When rendering points, if @enable is %TRUE then the texture
* coordinates for this layer will be replaced with coordinates that
@@ -437,7 +437,7 @@ CoglBool
cogl_pipeline_set_layer_point_sprite_coords_enabled (CoglPipeline *pipeline,
int layer_index,
CoglBool enable,
- GError **error);
+ CoglError **error);
/**
* cogl_pipeline_get_layer_point_sprite_coords_enabled:
diff --git a/cogl/cogl-pipeline-state.c b/cogl/cogl-pipeline-state.c
index 6b14f378..96a72e27 100644
--- a/cogl/cogl-pipeline-state.c
+++ b/cogl/cogl-pipeline-state.c
@@ -36,6 +36,7 @@
#include "cogl-depth-state-private.h"
#include "cogl-pipeline-state-private.h"
#include "cogl-snippet-private.h"
+#include "cogl-error-private.h"
#include "string.h"
@@ -938,14 +939,13 @@ setup_blend_state (CoglBlendStringStatement *statement,
CoglBool
cogl_pipeline_set_blend (CoglPipeline *pipeline,
const char *blend_description,
- GError **error)
+ CoglError **error)
{
CoglPipelineState state = COGL_PIPELINE_STATE_BLEND;
CoglPipeline *authority;
CoglBlendStringStatement statements[2];
CoglBlendStringStatement *rgb;
CoglBlendStringStatement *a;
- GError *internal_error = NULL;
int count;
CoglPipelineBlendState *blend_state;
@@ -957,19 +957,9 @@ cogl_pipeline_set_blend (CoglPipeline *pipeline,
_cogl_blend_string_compile (blend_description,
COGL_BLEND_STRING_CONTEXT_BLENDING,
statements,
- &internal_error);
+ error);
if (!count)
- {
- if (error)
- g_propagate_error (error, internal_error);
- else
- {
- g_warning ("Cannot compile blend description: %s\n",
- internal_error->message);
- g_error_free (internal_error);
- }
- return FALSE;
- }
+ return FALSE;
if (count == 1)
rgb = a = statements;
@@ -1161,7 +1151,7 @@ cogl_pipeline_set_user_program (CoglPipeline *pipeline,
CoglBool
cogl_pipeline_set_depth_state (CoglPipeline *pipeline,
const CoglDepthState *depth_state,
- GError **error)
+ CoglError **error)
{
CoglPipelineState state = COGL_PIPELINE_STATE_DEPTH;
CoglPipeline *authority;
@@ -1186,10 +1176,10 @@ cogl_pipeline_set_depth_state (CoglPipeline *pipeline,
(depth_state->range_near != 0 ||
depth_state->range_far != 1))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "glDepthRange not available on GLES 1");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "glDepthRange not available on GLES 1");
return FALSE;
}
diff --git a/cogl/cogl-pipeline-state.h b/cogl/cogl-pipeline-state.h
index 01720464..9915e628 100644
--- a/cogl/cogl-pipeline-state.h
+++ b/cogl/cogl-pipeline-state.h
@@ -385,7 +385,7 @@ cogl_pipeline_get_alpha_test_reference (CoglPipeline *pipeline);
* @pipeline: A #CoglPipeline object
* @blend_string: A <link linkend="cogl-Blend-Strings">Cogl blend string</link>
* describing the desired blend function.
- * @error: return location for a #GError that may report lack of driver
+ * @error: return location for a #CoglError that may report lack of driver
* support if you give separate blend string statements for the alpha
* channel and RGB channels since some drivers, or backends such as
* GLES 1.1, don't support this feature. May be %NULL, in which case a
@@ -465,7 +465,7 @@ cogl_pipeline_get_alpha_test_reference (CoglPipeline *pipeline);
CoglBool
cogl_pipeline_set_blend (CoglPipeline *pipeline,
const char *blend_string,
- GError **error);
+ CoglError **error);
/**
* cogl_pipeline_set_blend_constant:
@@ -619,7 +619,7 @@ cogl_pipeline_set_user_program (CoglPipeline *pipeline,
* cogl_pipeline_set_depth_state:
* @pipeline: A #CoglPipeline object
* @state: A #CoglDepthState struct
- * @error: A #GError to report failures to setup the given @state.
+ * @error: A #CoglError to report failures to setup the given @state.
*
* This commits all the depth state configured in @state struct to the
* given @pipeline. The configuration values are copied into the
@@ -638,7 +638,7 @@ cogl_pipeline_set_user_program (CoglPipeline *pipeline,
CoglBool
cogl_pipeline_set_depth_state (CoglPipeline *pipeline,
const CoglDepthState *state,
- GError **error);
+ CoglError **error);
/**
* cogl_pipeline_get_depth_state
diff --git a/cogl/cogl-renderer.c b/cogl/cogl-renderer.c
index bf971a19..55e520f1 100644
--- a/cogl/cogl-renderer.c
+++ b/cogl/cogl-renderer.c
@@ -43,6 +43,7 @@
#include "cogl-winsys-private.h"
#include "cogl-winsys-stub-private.h"
#include "cogl-config-private.h"
+#include "cogl-error-private.h"
#ifdef COGL_HAS_EGL_PLATFORM_XLIB_SUPPORT
#include "cogl-winsys-egl-x11-private.h"
@@ -129,7 +130,7 @@ typedef struct _CoglNativeFilterClosure
void *data;
} CoglNativeFilterClosure;
-GQuark
+uint32_t
cogl_renderer_error_quark (void)
{
return g_quark_from_static_string ("cogl-renderer-error-quark");
@@ -225,7 +226,7 @@ cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer,
CoglBool
cogl_renderer_check_onscreen_template (CoglRenderer *renderer,
CoglOnscreenTemplate *onscreen_template,
- GError **error)
+ CoglError **error)
{
CoglDisplay *display;
@@ -246,7 +247,7 @@ cogl_renderer_check_onscreen_template (CoglRenderer *renderer,
static CoglBool
_cogl_renderer_choose_driver (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
const char *driver_name = g_getenv ("COGL_DRIVER");
const char *libgl_name;
@@ -307,7 +308,7 @@ _cogl_renderer_choose_driver (CoglRenderer *renderer,
}
#endif
- g_set_error (error,
+ _cogl_set_error (error,
COGL_DRIVER_ERROR,
COGL_DRIVER_ERROR_NO_SUITABLE_DRIVER_FOUND,
"No suitable driver found");
@@ -318,7 +319,7 @@ found:
if (support_gles2_constraint &&
renderer->driver != COGL_DRIVER_GLES2)
{
- g_set_error (error,
+ _cogl_set_error (error,
COGL_RENDERER_ERROR,
COGL_RENDERER_ERROR_BAD_CONSTRAINT,
"No suitable driver found");
@@ -332,7 +333,7 @@ found:
if (renderer->libgl_module == NULL)
{
- g_set_error (error, COGL_DRIVER_ERROR,
+ _cogl_set_error (error, COGL_DRIVER_ERROR,
COGL_DRIVER_ERROR_FAILED_TO_LOAD_LIBRARY,
"Failed to dynamically open the GL library \"%s\"",
libgl_name);
@@ -368,7 +369,7 @@ found:
/* Final connection API */
CoglBool
-cogl_renderer_connect (CoglRenderer *renderer, GError **error)
+cogl_renderer_connect (CoglRenderer *renderer, CoglError **error)
{
int i;
GString *error_message;
@@ -387,7 +388,7 @@ cogl_renderer_connect (CoglRenderer *renderer, GError **error)
for (i = 0; i < G_N_ELEMENTS (_cogl_winsys_vtable_getters); i++)
{
const CoglWinsysVtable *winsys = _cogl_winsys_vtable_getters[i]();
- GError *tmp_error = NULL;
+ CoglError *tmp_error = NULL;
GList *l;
CoglBool skip_due_to_constraints = FALSE;
@@ -430,7 +431,7 @@ cogl_renderer_connect (CoglRenderer *renderer, GError **error)
{
g_string_append_c (error_message, '\n');
g_string_append (error_message, tmp_error->message);
- g_error_free (tmp_error);
+ cogl_error_free (tmp_error);
}
else
{
@@ -444,14 +445,14 @@ cogl_renderer_connect (CoglRenderer *renderer, GError **error)
{
if (constraints_failed)
{
- g_set_error (error, COGL_RENDERER_ERROR,
+ _cogl_set_error (error, COGL_RENDERER_ERROR,
COGL_RENDERER_ERROR_BAD_CONSTRAINT,
"Failed to connected to any renderer due to constraints");
return FALSE;
}
renderer->winsys_vtable = NULL;
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Failed to connected to any renderer: %s",
error_message->str);
diff --git a/cogl/cogl-renderer.h b/cogl/cogl-renderer.h
index c8bac6eb..9766e77b 100644
--- a/cogl/cogl-renderer.h
+++ b/cogl/cogl-renderer.h
@@ -32,6 +32,7 @@
#include <cogl/cogl-types.h>
#include <cogl/cogl-onscreen-template.h>
+#include <cogl/cogl-error.h>
G_BEGIN_DECLS
@@ -75,7 +76,7 @@ G_BEGIN_DECLS
*/
#define COGL_RENDERER_ERROR cogl_renderer_error_quark ()
-GQuark
+uint32_t
cogl_renderer_error_quark (void);
typedef struct _CoglRenderer CoglRenderer;
@@ -220,7 +221,7 @@ cogl_renderer_get_n_fragment_texture_units (CoglRenderer *renderer);
* cogl_renderer_check_onscreen_template:
* @renderer: A #CoglRenderer
* @onscreen_template: A #CoglOnscreenTemplate
- * @error: A pointer to a #GError for reporting exceptions
+ * @error: A pointer to a #CoglError for reporting exceptions
*
* Tests if a given @onscreen_template can be supported with the given
* @renderer.
@@ -233,14 +234,14 @@ cogl_renderer_get_n_fragment_texture_units (CoglRenderer *renderer);
CoglBool
cogl_renderer_check_onscreen_template (CoglRenderer *renderer,
CoglOnscreenTemplate *onscreen_template,
- GError **error);
+ CoglError **error);
/* Final connection API */
/**
* cogl_renderer_connect:
* @renderer: An unconnected #CoglRenderer
- * @error a pointer to a #GError for reporting exceptions
+ * @error a pointer to a #CoglError for reporting exceptions
*
* Connects the configured @renderer. Renderer connection isn't a
* very active process, it basically just means validating that
@@ -253,7 +254,7 @@ cogl_renderer_check_onscreen_template (CoglRenderer *renderer,
* Stability: unstable
*/
CoglBool
-cogl_renderer_connect (CoglRenderer *renderer, GError **error);
+cogl_renderer_connect (CoglRenderer *renderer, CoglError **error);
/**
* CoglRendererConstraint:
diff --git a/cogl/cogl-sdl.c b/cogl/cogl-sdl.c
index c4adbf8e..03afeb7a 100644
--- a/cogl/cogl-sdl.c
+++ b/cogl/cogl-sdl.c
@@ -46,7 +46,7 @@ cogl_sdl_renderer_get_event_type (CoglRenderer *renderer)
}
CoglContext *
-cogl_sdl_context_new (int type, GError **error)
+cogl_sdl_context_new (int type, CoglError **error)
{
CoglRenderer *renderer = cogl_renderer_new ();
CoglDisplay *display;
diff --git a/cogl/cogl-sdl.h b/cogl/cogl-sdl.h
index 6e9c079b..05da0366 100644
--- a/cogl/cogl-sdl.h
+++ b/cogl/cogl-sdl.h
@@ -56,7 +56,7 @@ G_BEGIN_DECLS
* this:
* |[
* MyAppData data;
- * GError *error = NULL;
+ * CoglError *error = NULL;
*
* data.ctx = cogl_sdl_context_new (SDL_USEREVENT, &error);
* if (!data.ctx)
@@ -99,7 +99,7 @@ G_BEGIN_DECLS
* cogl_sdl_context_new:
* @type: An SDL user event type between %SDL_USEREVENT and
* %SDL_NUMEVENTS - %1
- * @error: A GError return location.
+ * @error: A CoglError return location.
*
* This is a convenience function for creating a new #CoglContext for
* use with SDL and specifying what SDL user event type Cogl can use
@@ -132,7 +132,7 @@ G_BEGIN_DECLS
* Stability: unstable
*/
CoglContext *
-cogl_sdl_context_new (int type, GError **error);
+cogl_sdl_context_new (int type, CoglError **error);
/**
* cogl_sdl_renderer_set_event_type:
diff --git a/cogl/cogl-texture-2d-private.h b/cogl/cogl-texture-2d-private.h
index 823303cf..a7f41b6f 100644
--- a/cogl/cogl-texture-2d-private.h
+++ b/cogl/cogl-texture-2d-private.h
@@ -67,7 +67,7 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
int height,
CoglPixelFormat format,
EGLImageKHR image,
- GError **error);
+ CoglError **error);
#endif
/*
diff --git a/cogl/cogl-texture-2d-sliced.c b/cogl/cogl-texture-2d-sliced.c
index d8b229e0..a87cc394 100644
--- a/cogl/cogl-texture-2d-sliced.c
+++ b/cogl/cogl-texture-2d-sliced.c
@@ -45,6 +45,7 @@
#include "cogl-journal-private.h"
#include "cogl-pipeline-opengl-private.h"
#include "cogl-primitive-texture.h"
+#include "cogl-error-private.h"
#include <string.h>
#include <stdlib.h>
@@ -752,7 +753,7 @@ _cogl_texture_2d_sliced_slices_create (CoglContext *ctx,
for (x = 0; x < n_x_slices; ++x)
{
- GError *error = NULL;
+ CoglError *error = NULL;
x_span = &g_array_index (tex_2ds->slice_x_spans, CoglSpan, x);
COGL_NOTE (SLICING, "CREATE SLICE (%d,%d)\tsize (%d,%d)",
@@ -766,7 +767,7 @@ _cogl_texture_2d_sliced_slices_create (CoglContext *ctx,
if (!slice_textures[y * n_x_slices + x])
{
g_array_set_size (tex_2ds->slice_textures, y * n_x_slices + x);
- g_error_free (error);
+ cogl_error_free (error);
return FALSE;
}
}
@@ -843,7 +844,7 @@ cogl_texture_2d_sliced_new_with_size (CoglContext *ctx,
unsigned int height,
int max_waste,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTexture2DSliced *tex_2ds;
@@ -862,10 +863,10 @@ cogl_texture_2d_sliced_new_with_size (CoglContext *ctx,
internal_format))
{
_cogl_texture_2d_sliced_free (tex_2ds);
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_NO_MEMORY,
- "Not enough memory to allocate texture slices");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_NO_MEMORY,
+ "Not enough memory to allocate texture slices");
return NULL;
}
diff --git a/cogl/cogl-texture-2d-sliced.h b/cogl/cogl-texture-2d-sliced.h
index 7ec2fedc..3173d14c 100644
--- a/cogl/cogl-texture-2d-sliced.h
+++ b/cogl/cogl-texture-2d-sliced.h
@@ -75,7 +75,7 @@ typedef struct _CoglTexture2DSliced CoglTexture2DSliced;
* are allowed in the non-power-of-two textures before
* they must be sliced to reduce the amount of waste.
* @internal_format: The format of the texture
- * @error: A #GError for exceptions.
+ * @error: A #CoglError for exceptions.
*
* Creates a #CoglTexture2DSliced that may internally be comprised of
* 1 or more #CoglTexture2D textures with power-of-two sizes.
@@ -97,7 +97,7 @@ cogl_texture_2d_sliced_new_with_size (CoglContext *ctx,
unsigned int height,
int max_waste,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_is_texture_2d_sliced:
diff --git a/cogl/cogl-texture-2d.c b/cogl/cogl-texture-2d.c
index f3f6b5fd..52ce9ca5 100644
--- a/cogl/cogl-texture-2d.c
+++ b/cogl/cogl-texture-2d.c
@@ -38,6 +38,7 @@
#include "cogl-journal-private.h"
#include "cogl-pipeline-opengl-private.h"
#include "cogl-framebuffer-private.h"
+#include "cogl-error-private.h"
#ifdef COGL_HAS_EGL_SUPPORT
#include "cogl-winsys-egl-private.h"
#endif
@@ -183,7 +184,7 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
int width,
int height,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTexture2D *tex_2d;
GLenum gl_intformat;
@@ -196,10 +197,10 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
if (!_cogl_texture_2d_can_create (ctx, width, height, internal_format))
{
- g_set_error (error, COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_SIZE,
- "Failed to create texture 2d due to size/format"
- " constraints");
+ _cogl_set_error (error, COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_SIZE,
+ "Failed to create texture 2d due to size/format"
+ " constraints");
return NULL;
}
@@ -226,7 +227,7 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
CoglTexture2D *
cogl_texture_2d_new_from_bitmap (CoglBitmap *bmp,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTexture2D *tex_2d;
CoglBitmap *dst_bmp;
@@ -249,10 +250,10 @@ cogl_texture_2d_new_from_bitmap (CoglBitmap *bmp,
cogl_bitmap_get_height (bmp),
internal_format))
{
- g_set_error (error, COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_SIZE,
- "Failed to create texture 2d due to size/format"
- " constraints");
+ _cogl_set_error (error, COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_SIZE,
+ "Failed to create texture 2d due to size/format"
+ " constraints");
return NULL;
}
@@ -264,9 +265,9 @@ cogl_texture_2d_new_from_bitmap (CoglBitmap *bmp,
&gl_format,
&gl_type)) == NULL)
{
- g_set_error (error, COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_FORMAT,
- "Failed to prepare texture upload due to format");
+ _cogl_set_error (error, COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_FORMAT,
+ "Failed to prepare texture upload due to format");
return NULL;
}
@@ -315,7 +316,7 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
CoglPixelFormat internal_format,
int rowstride,
const uint8_t *data,
- GError **error)
+ CoglError **error)
{
CoglBitmap *bmp;
CoglTexture2D *tex_2d;
@@ -349,7 +350,7 @@ cogl_texture_2d_new_from_foreign (CoglContext *ctx,
int width,
int height,
CoglPixelFormat format,
- GError **error)
+ CoglError **error)
{
/* NOTE: width, height and internal format are not queriable
* in GLES, hence such a function prototype.
@@ -365,9 +366,9 @@ cogl_texture_2d_new_from_foreign (CoglContext *ctx,
if (!ctx->texture_driver->allows_foreign_gl_target (ctx, GL_TEXTURE_2D))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
"Foreign GL_TEXTURE_2D textures are not "
"supported by your system");
return NULL;
@@ -381,10 +382,10 @@ cogl_texture_2d_new_from_foreign (CoglContext *ctx,
_cogl_bind_gl_texture_transient (GL_TEXTURE_2D, gl_handle, TRUE);
if (ctx->glGetError () != GL_NO_ERROR)
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Failed to bind foreign GL_TEXTURE_2D texture");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Failed to bind foreign GL_TEXTURE_2D texture");
return NULL;
}
@@ -414,10 +415,10 @@ cogl_texture_2d_new_from_foreign (CoglContext *ctx,
gl_int_format,
&format))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Unsupported internal format for foreign texture");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Unsupported internal format for foreign texture");
return NULL;
}
}
@@ -446,10 +447,10 @@ cogl_texture_2d_new_from_foreign (CoglContext *ctx,
/* Compressed texture images not supported */
if (gl_compressed == GL_TRUE)
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Compressed foreign textures aren't currently supported");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Compressed foreign textures aren't currently supported");
return NULL;
}
@@ -496,7 +497,7 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
int height,
CoglPixelFormat format,
EGLImageKHR image,
- GError **error)
+ CoglError **error)
{
CoglTexture2D *tex_2d;
GLenum gl_error;
@@ -523,10 +524,11 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
ctx->glEGLImageTargetTexture2D (GL_TEXTURE_2D, image);
if (ctx->glGetError () != GL_NO_ERROR)
{
- g_set_error (error,
- COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_BAD_PARAMETER,
- "Could not create a CoglTexture2D from a given EGLImage");
+ _cogl_set_error (error,
+ COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_BAD_PARAMETER,
+ "Could not create a CoglTexture2D from a given "
+ "EGLImage");
return NULL;
}
@@ -538,7 +540,7 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
CoglTexture2D *
cogl_wayland_texture_2d_new_from_buffer (CoglContext *ctx,
struct wl_buffer *buffer,
- GError **error)
+ CoglError **error)
{
if (wl_buffer_is_shm (buffer))
{
diff --git a/cogl/cogl-texture-2d.h b/cogl/cogl-texture-2d.h
index 7316738e..1fc3d12f 100644
--- a/cogl/cogl-texture-2d.h
+++ b/cogl/cogl-texture-2d.h
@@ -75,7 +75,7 @@ cogl_is_texture_2d (void *object);
* @width: Width of the texture to allocate
* @height: Height of the texture to allocate
* @internal_format: The format of the texture
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Allocates a low-level #CoglTexture2D texture that your GPU can
* texture from directly. This is unlike sliced textures for example
@@ -100,7 +100,7 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
int width,
int height,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_2d_new_from_data:
@@ -120,7 +120,7 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
* scanlines in @data. A value of 0 will make Cogl automatically
* calculate @rowstride from @width and @format.
* @data: pointer the memory region where the source buffer resides
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Creates a new #CoglTexture2D texture based on data residing in memory.
* These are unlike sliced textures for example which may be comprised
@@ -147,7 +147,7 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
CoglPixelFormat internal_format,
int rowstride,
const uint8_t *data,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_2d_new_from_bitmap:
@@ -160,7 +160,7 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
* is if you have non-premultiplied source data and are going to adjust
* the blend mode (see cogl_pipeline_set_blend()) or use the data for
* something other than straight blending.
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Creates a new #CoglTexture2D texture based on data residing in a
* bitmap. These are unlike sliced textures for example which may be
@@ -184,7 +184,7 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
CoglTexture2D *
cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
@@ -194,7 +194,7 @@ cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap,
* @width: Width of the foreign GL texture
* @height: Height of the foreign GL texture
* @internal_format: The format of the texture
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Wraps an existing GL_TEXTURE_2D texture object as a #CoglTexture2D.
* This can be used for integrating Cogl with software using OpenGL
@@ -217,7 +217,7 @@ cogl_texture_2d_new_from_foreign (CoglContext *ctx,
int width,
int height,
CoglPixelFormat format,
- GError **error);
+ CoglError **error);
G_END_DECLS
diff --git a/cogl/cogl-texture-3d.c b/cogl/cogl-texture-3d.c
index 1a2b84d3..7b781cbb 100644
--- a/cogl/cogl-texture-3d.c
+++ b/cogl/cogl-texture-3d.c
@@ -37,6 +37,7 @@
#include "cogl-journal-private.h"
#include "cogl-pipeline-private.h"
#include "cogl-pipeline-opengl-private.h"
+#include "cogl-error-private.h"
#include <string.h>
#include <math.h>
@@ -145,7 +146,7 @@ _cogl_texture_3d_can_create (CoglContext *ctx,
int height,
int depth,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
GLenum gl_intformat;
GLenum gl_type;
@@ -153,10 +154,10 @@ _cogl_texture_3d_can_create (CoglContext *ctx,
/* This should only happen on GLES */
if (!cogl_has_feature (ctx, COGL_FEATURE_ID_TEXTURE_3D))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "3D textures are not supported by the GPU");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "3D textures are not supported by the GPU");
return FALSE;
}
@@ -167,11 +168,11 @@ _cogl_texture_3d_can_create (CoglContext *ctx,
!_cogl_util_is_pot (height) ||
!_cogl_util_is_pot (depth)))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "A non-power-of-two size was requested but this is not "
- "supported by the GPU");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "A non-power-of-two size was requested but this is not "
+ "supported by the GPU");
return FALSE;
}
@@ -190,10 +191,10 @@ _cogl_texture_3d_can_create (CoglContext *ctx,
height,
depth))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "The requested dimensions are not supported by the GPU");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "The requested dimensions are not supported by the GPU");
return FALSE;
}
@@ -206,7 +207,7 @@ cogl_texture_3d_new_with_size (CoglContext *ctx,
int height,
int depth,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTexture3D *tex_3d;
GLenum gl_intformat;
@@ -248,7 +249,7 @@ cogl_texture_3d_new_from_bitmap (CoglBitmap *bmp,
unsigned int height,
unsigned int depth,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTexture3D *tex_3d;
CoglBitmap *dst_bmp;
@@ -283,8 +284,8 @@ cogl_texture_3d_new_from_bitmap (CoglBitmap *bmp,
if (dst_bmp == NULL)
{
- g_set_error (error, COGL_BITMAP_ERROR, COGL_BITMAP_ERROR_FAILED,
- "Bitmap conversion failed");
+ _cogl_set_error (error, COGL_BITMAP_ERROR, COGL_BITMAP_ERROR_FAILED,
+ "Bitmap conversion failed");
return NULL;
}
@@ -337,13 +338,13 @@ cogl_texture_3d_new_from_data (CoglContext *context,
int rowstride,
int image_stride,
const uint8_t *data,
- GError **error)
+ CoglError **error)
{
CoglBitmap *bitmap;
CoglTexture3D *ret;
/* These are considered a programmer errors so we won't set a
- GError. It would be nice if this was a _COGL_RETURN_IF_FAIL but the
+ CoglError. It would be nice if this was a _COGL_RETURN_IF_FAIL but the
rest of Cogl isn't using that */
if (format == COGL_PIXEL_FORMAT_ANY)
return NULL;
diff --git a/cogl/cogl-texture-3d.h b/cogl/cogl-texture-3d.h
index 019be51a..1956b4df 100644
--- a/cogl/cogl-texture-3d.h
+++ b/cogl/cogl-texture-3d.h
@@ -57,12 +57,12 @@ typedef struct _CoglTexture3D CoglTexture3D;
* @depth: depth of the texture in pixels.
* @internal_format: the #CoglPixelFormat to use for the GPU
* storage of the texture.
- * @error: A GError return location.
+ * @error: A CoglError return location.
*
* Creates a new Cogl 3D texture with the specified dimensions and
* pixel format.
*
- * Note that this function will throw a #GError if
+ * Note that this function will throw a #CoglError if
* %COGL_FEATURE_TEXTURE_3D is not advertised. It can also fail if the
* requested dimensions are not supported by the GPU.
*
@@ -78,7 +78,7 @@ cogl_texture_3d_new_with_size (CoglContext *context,
int height,
int depth,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_3d_new_from_data:
@@ -103,13 +103,13 @@ cogl_texture_3d_new_with_size (CoglContext *context,
* rows. Alternatively 0 can be passed to infer the @image_stride
* from the @height.
* @data: pointer the memory region where the source buffer resides
- * @error: A GError return location.
+ * @error: A CoglError return location.
*
* Creates a new 3D texture and initializes it with @data. The data is
* assumed to be packed array of @depth images. There can be padding
* between the images using @image_stride.
*
- * Note that this function will throw a #GError if
+ * Note that this function will throw a #CoglError if
* %COGL_FEATURE_TEXTURE_3D is not advertised. It can also fail if the
* requested dimensions are not supported by the GPU.
*
@@ -129,7 +129,7 @@ cogl_texture_3d_new_from_data (CoglContext *context,
int rowstride,
int image_stride,
const uint8_t *data,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_3d_new_from_bitmap:
@@ -144,7 +144,7 @@ cogl_texture_3d_new_from_data (CoglContext *context,
* is if you have non-premultiplied source data and are going to adjust
* the blend mode (see cogl_pipeline_set_blend()) or use the data for
* something other than straight blending.
- * @error: A GError return location.
+ * @error: A CoglError return location.
*
* Creates a new 3D texture and initializes it with the images in
* @bitmap. The images are assumed to be packed together after one
@@ -163,7 +163,7 @@ cogl_texture_3d_new_from_bitmap (CoglBitmap *bitmap,
unsigned int height,
unsigned int depth,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_is_texture_3d:
diff --git a/cogl/cogl-texture-rectangle.c b/cogl/cogl-texture-rectangle.c
index e87c7076..2b555649 100644
--- a/cogl/cogl-texture-rectangle.c
+++ b/cogl/cogl-texture-rectangle.c
@@ -37,6 +37,7 @@
#include "cogl-object-private.h"
#include "cogl-journal-private.h"
#include "cogl-pipeline-opengl-private.h"
+#include "cogl-error-private.h"
#include <string.h>
#include <math.h>
@@ -112,7 +113,7 @@ _cogl_texture_rectangle_can_create (CoglContext *ctx,
unsigned int width,
unsigned int height,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
GLenum gl_intformat;
GLenum gl_format;
@@ -120,10 +121,10 @@ _cogl_texture_rectangle_can_create (CoglContext *ctx,
if (!cogl_has_feature (ctx, COGL_FEATURE_ID_TEXTURE_RECTANGLE))
{
- g_set_error (error,
- COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_TYPE,
- "The CoglTextureRectangle feature isn't available");
+ _cogl_set_error (error,
+ COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_TYPE,
+ "The CoglTextureRectangle feature isn't available");
return FALSE;
}
@@ -142,10 +143,10 @@ _cogl_texture_rectangle_can_create (CoglContext *ctx,
width,
height))
{
- g_set_error (error,
- COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_SIZE,
- "The requested texture size + format is unsupported");
+ _cogl_set_error (error,
+ COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_SIZE,
+ "The requested texture size + format is unsupported");
return FALSE;
}
@@ -192,7 +193,7 @@ cogl_texture_rectangle_new_with_size (CoglContext *ctx,
int width,
int height,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTextureRectangle *tex_rect;
GLenum gl_intformat;
@@ -234,7 +235,7 @@ cogl_texture_rectangle_new_with_size (CoglContext *ctx,
CoglTextureRectangle *
cogl_texture_rectangle_new_from_bitmap (CoglBitmap *bmp,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglTextureRectangle *tex_rect;
CoglBitmap *dst_bmp;
@@ -299,7 +300,7 @@ cogl_texture_rectangle_new_from_foreign (CoglContext *ctx,
int width,
int height,
CoglPixelFormat format,
- GError **error)
+ CoglError **error)
{
/* NOTE: width, height and internal format are not queriable
* in GLES, hence such a function prototype.
@@ -316,11 +317,11 @@ cogl_texture_rectangle_new_from_foreign (CoglContext *ctx,
if (!ctx->texture_driver->allows_foreign_gl_target (ctx,
GL_TEXTURE_RECTANGLE_ARB))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Foreign GL_TEXTURE_RECTANGLE textures are not "
- "supported by your system");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Foreign GL_TEXTURE_RECTANGLE textures are not "
+ "supported by your system");
return NULL;
}
@@ -331,10 +332,10 @@ cogl_texture_rectangle_new_from_foreign (CoglContext *ctx,
_cogl_bind_gl_texture_transient (GL_TEXTURE_RECTANGLE_ARB, gl_handle, TRUE);
if (ctx->glGetError () != GL_NO_ERROR)
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Failed to bind foreign GL_TEXTURE_RECTANGLE texture");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Failed to bind foreign GL_TEXTURE_RECTANGLE texture");
return NULL;
}
@@ -361,10 +362,10 @@ cogl_texture_rectangle_new_from_foreign (CoglContext *ctx,
gl_int_format,
&format))
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Unsupported internal format for foreign texture");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Unsupported internal format for foreign texture");
return NULL;
}
}
@@ -393,10 +394,10 @@ cogl_texture_rectangle_new_from_foreign (CoglContext *ctx,
/* Compressed texture images not supported */
if (gl_compressed == GL_TRUE)
{
- g_set_error (error,
- COGL_ERROR,
- COGL_ERROR_UNSUPPORTED,
- "Compressed foreign textures aren't currently supported");
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Compressed foreign textures aren't currently supported");
return NULL;
}
diff --git a/cogl/cogl-texture-rectangle.h b/cogl/cogl-texture-rectangle.h
index b97bbc25..20de97dd 100644
--- a/cogl/cogl-texture-rectangle.h
+++ b/cogl/cogl-texture-rectangle.h
@@ -82,7 +82,7 @@ cogl_is_texture_rectangle (void *object);
* @width: The texture width to allocate
* @height: The texture height to allocate
* @internal_format: The desired internal texture format
- * @error: An optional GError pointer for reporting exceptions
+ * @error: An optional CoglError pointer for reporting exceptions
*
* Allocates a new #CoglTextureRectangle texture with a given @width, @height
* and @internal_format. This texture is a low-level texture that
@@ -114,14 +114,14 @@ cogl_texture_rectangle_new_with_size (CoglContext *ctx,
int width,
int height,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_rectangle_new_from_bitmap:
* @bitmap: A #CoglBitmap
* @internal_format: the #CoglPixelFormat to use for the GPU storage of the
* texture
- * @error: A return location for a GError or %NULL
+ * @error: A return location for a CoglError or %NULL
*
* Allocates a new #CoglTextureRectangle texture which will be
* initialized with the pixel data from @bitmap. Internally the data
@@ -152,7 +152,7 @@ cogl_texture_rectangle_new_with_size (CoglContext *ctx,
CoglTextureRectangle *
cogl_texture_rectangle_new_from_bitmap (CoglBitmap *bitmap,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_rectangle_new_from_foreign:
@@ -161,7 +161,7 @@ cogl_texture_rectangle_new_from_bitmap (CoglBitmap *bitmap,
* @width: Width of the foreign GL texture
* @height: Height of the foreign GL texture
* @internal_format: The format of the texture
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Wraps an existing GL_TEXTURE_RECTANGLE texture object as a
* #CoglTextureRectangle. This can be used for integrating Cogl with
@@ -197,7 +197,7 @@ cogl_texture_rectangle_new_from_foreign (CoglContext *ctx,
int width,
int height,
CoglPixelFormat format,
- GError **error);
+ CoglError **error);
G_END_DECLS
diff --git a/cogl/cogl-texture.c b/cogl/cogl-texture.c
index e89c8683..7155898e 100644
--- a/cogl/cogl-texture.c
+++ b/cogl/cogl-texture.c
@@ -59,7 +59,7 @@
#include <stdlib.h>
#include <math.h>
-GQuark
+uint32_t
cogl_texture_error_quark (void)
{
return g_quark_from_static_string ("cogl-texture-error-quark");
@@ -446,7 +446,7 @@ CoglTexture *
cogl_texture_new_from_file (const char *filename,
CoglTextureFlags flags,
CoglPixelFormat internal_format,
- GError **error)
+ CoglError **error)
{
CoglBitmap *bmp;
CoglTexture *texture = NULL;
diff --git a/cogl/cogl-texture.h b/cogl/cogl-texture.h
index 0aa4e402..cd3f394b 100644
--- a/cogl/cogl-texture.h
+++ b/cogl/cogl-texture.h
@@ -58,7 +58,7 @@ G_BEGIN_DECLS
/**
* COGL_TEXTURE_ERROR:
*
- * #GError domain for texture errors.
+ * #CoglError domain for texture errors.
*
* Since: 2.0
* Stability: Unstable
@@ -100,7 +100,7 @@ typedef enum {
COGL_TEXTURE_TYPE_RECTANGLE
} CoglTextureType;
-GQuark cogl_texture_error_quark (void);
+uint32_t cogl_texture_error_quark (void);
/**
* cogl_texture_new_with_size:
@@ -134,7 +134,7 @@ cogl_texture_new_with_size (unsigned int width,
* have non-premultiplied source data and are going to adjust the blend
* mode (see cogl_material_set_blend()) or use the data for something
* other than straight blending.
- * @error: return location for a #GError or %NULL
+ * @error: return location for a #CoglError or %NULL
*
* Creates a #CoglTexture from an image file.
*
@@ -146,7 +146,7 @@ CoglTexture *
cogl_texture_new_from_file (const char *filename,
CoglTextureFlags flags,
CoglPixelFormat internal_format,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_new_from_data:
diff --git a/cogl/cogl-types.h b/cogl/cogl-types.h
index cd527e55..0a9074f5 100644
--- a/cogl/cogl-types.h
+++ b/cogl/cogl-types.h
@@ -566,7 +566,7 @@ typedef enum {
/**
* COGL_BLEND_STRING_ERROR:
*
- * #GError domain for blend string parser errors
+ * #CoglError domain for blend string parser errors
*
* Since: 1.0
*/
@@ -591,28 +591,28 @@ typedef enum { /*< prefix=COGL_BLEND_STRING_ERROR >*/
COGL_BLEND_STRING_ERROR_GPU_UNSUPPORTED_ERROR
} CoglBlendStringError;
-GQuark
+uint32_t
cogl_blend_string_error_quark (void);
-#define COGL_ERROR (_cogl_error_quark ())
+#define COGL_SYSTEM_ERROR (_cogl_system_error_quark ())
/**
- * CoglError:
- * @COGL_ERROR_UNSUPPORTED: You tried to use a feature or
+ * CoglSystemError:
+ * @COGL_SYSTEM_ERROR_UNSUPPORTED: You tried to use a feature or
* configuration not currently available.
- * @COGL_ERROR_NO_MEMORY: You tried to allocate a resource
+ * @COGL_SYSTEM_ERROR_NO_MEMORY: You tried to allocate a resource
* such as a texture and there wasn't enough memory.
*
* Error enumeration for Cogl
*
- * The @COGL_ERROR_UNSUPPORTED error can be thrown for a variety of
- * reasons. For example:
+ * The @COGL_SYSTEM_ERROR_UNSUPPORTED error can be thrown for a
+ * variety of reasons. For example:
*
* <itemizedlist>
* <listitem><para>You've tried to use a feature that is not
- * advertised by cogl_get_features(). This could happen if you create
+ * advertised by cogl_has_feature(). This could happen if you create
* a 2d texture with a non-power-of-two size when
- * %COGL_FEATURE_TEXTURE_NPOT is not advertised.</para></listitem>
+ * %COGL_FEATURE_ID_TEXTURE_NPOT is not advertised.</para></listitem>
* <listitem><para>The GPU can not handle the configuration you have
* requested. An example might be if you try to use too many texture
* layers in a single #CoglPipeline</para></listitem>
@@ -627,12 +627,12 @@ cogl_blend_string_error_quark (void);
* Stability: unstable
*/
typedef enum { /*< prefix=COGL_ERROR >*/
- COGL_ERROR_UNSUPPORTED,
- COGL_ERROR_NO_MEMORY
-} CoglError;
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ COGL_SYSTEM_ERROR_NO_MEMORY
+} CoglSystemError;
-GQuark
-_cogl_error_quark (void);
+uint32_t
+_cogl_system_error_quark (void);
/**
* CoglAttributeType:
diff --git a/cogl/cogl-wayland-server.h b/cogl/cogl-wayland-server.h
index 315af22e..6e66292d 100644
--- a/cogl/cogl-wayland-server.h
+++ b/cogl/cogl-wayland-server.h
@@ -54,7 +54,7 @@ cogl_wayland_display_set_compositor_display (CoglDisplay *display,
* cogl_wayland_texture_2d_new_from_buffer:
* @ctx: A #CoglContext
* @buffer: A Wayland buffer
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Uploads the given Wayland @buffer to a #CoglTexture2D.
*
@@ -77,7 +77,7 @@ cogl_wayland_display_set_compositor_display (CoglDisplay *display,
CoglTexture2D *
cogl_wayland_texture_2d_new_from_buffer (CoglContext *ctx,
struct wl_buffer *buffer,
- GError **error);
+ CoglError **error);
G_END_DECLS
diff --git a/cogl/cogl-xlib-renderer-private.h b/cogl/cogl-xlib-renderer-private.h
index 0c73b5c3..4970f201 100644
--- a/cogl/cogl-xlib-renderer-private.h
+++ b/cogl/cogl-xlib-renderer-private.h
@@ -44,7 +44,7 @@ typedef struct _CoglXlibRenderer
} CoglXlibRenderer;
CoglBool
-_cogl_xlib_renderer_connect (CoglRenderer *renderer, GError **error);
+_cogl_xlib_renderer_connect (CoglRenderer *renderer, CoglError **error);
void
_cogl_xlib_renderer_disconnect (CoglRenderer *renderer);
diff --git a/cogl/cogl-xlib-renderer.c b/cogl/cogl-xlib-renderer.c
index 9ae7765e..713df7f2 100644
--- a/cogl/cogl-xlib-renderer.c
+++ b/cogl/cogl-xlib-renderer.c
@@ -37,6 +37,7 @@
#include "cogl-xlib-renderer-private.h"
#include "cogl-x11-renderer-private.h"
#include "cogl-winsys-private.h"
+#include "cogl-error-private.h"
#include <X11/Xlib.h>
#include <X11/extensions/Xdamage.h>
@@ -164,7 +165,7 @@ _cogl_xlib_renderer_untrap_errors (CoglRenderer *renderer,
}
static Display *
-assert_xlib_display (CoglRenderer *renderer, GError **error)
+assert_xlib_display (CoglRenderer *renderer, CoglError **error)
{
Display *xdpy = cogl_xlib_renderer_get_foreign_display (renderer);
CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (renderer);
@@ -179,7 +180,7 @@ assert_xlib_display (CoglRenderer *renderer, GError **error)
xdpy = XOpenDisplay (_cogl_x11_display_name);
if (xdpy == NULL)
{
- g_set_error (error,
+ _cogl_set_error (error,
COGL_RENDERER_ERROR,
COGL_RENDERER_ERROR_XLIB_DISPLAY_OPEN,
"Failed to open X Display %s", _cogl_x11_display_name);
@@ -191,7 +192,7 @@ assert_xlib_display (CoglRenderer *renderer, GError **error)
}
CoglBool
-_cogl_xlib_renderer_connect (CoglRenderer *renderer, GError **error)
+_cogl_xlib_renderer_connect (CoglRenderer *renderer, CoglError **error)
{
CoglXlibRenderer *xlib_renderer =
_cogl_xlib_renderer_get_data (renderer);
diff --git a/cogl/cogl.c b/cogl/cogl.c
index eda6efa5..5ccfcfb5 100644
--- a/cogl/cogl.c
+++ b/cogl/cogl.c
@@ -559,7 +559,7 @@ cogl_set_projection_matrix (CoglMatrix *matrix)
cogl_framebuffer_set_projection_matrix (cogl_get_draw_framebuffer (), matrix);
}
-GQuark
+uint32_t
_cogl_driver_error_quark (void)
{
return g_quark_from_static_string ("cogl-driver-error-quark");
@@ -784,10 +784,10 @@ _cogl_transform_point (const CoglMatrix *matrix_mv,
#undef VIEWPORT_TRANSFORM_X
#undef VIEWPORT_TRANSFORM_Y
-GQuark
-_cogl_error_quark (void)
+uint32_t
+_cogl_system_error_quark (void)
{
- return g_quark_from_static_string ("cogl-error-quark");
+ return g_quark_from_static_string ("cogl-system-error-quark");
}
void
diff --git a/cogl/cogl.h b/cogl/cogl.h
index 797cdb76..5f939e6e 100644
--- a/cogl/cogl.h
+++ b/cogl/cogl.h
@@ -46,6 +46,7 @@
*/
#include <cogl/cogl-defines.h>
+#include <cogl/cogl-error.h>
#include <cogl/cogl-object.h>
#include <cogl/cogl1-context.h>
diff --git a/cogl/cogl.symbols b/cogl/cogl.symbols
index 58c82c57..3d38555b 100644
--- a/cogl/cogl.symbols
+++ b/cogl/cogl.symbols
@@ -37,7 +37,7 @@ cogl_attribute_type_get_type
cogl_begin_gl
cogl_bitmap_error_get_type
-cogl_bitmap_error_quark
+cogl_bitmap_error_domain
cogl_bitmap_get_buffer
cogl_bitmap_get_format
cogl_bitmap_get_height
@@ -49,7 +49,7 @@ cogl_bitmap_new_from_file
cogl_bitmap_new_from_buffer
cogl_bitmap_new_with_size
cogl_blend_string_error_get_type
-cogl_blend_string_error_quark
+cogl_blend_string_error_domain
cogl_buffer_bit_get_type
cogl_buffer_get_size
@@ -216,7 +216,7 @@ cogl_framebuffer_draw_rectangle
cogl_framebuffer_draw_rectangles
cogl_framebuffer_draw_textured_rectangle
cogl_framebuffer_draw_textured_rectangles
-cogl_framebuffer_error_quark
+cogl_framebuffer_error_domain
cogl_framebuffer_fill_path
cogl_framebuffer_finish
cogl_framebuffer_frustum
@@ -695,7 +695,7 @@ cogl_renderer_connect
cogl_renderer_get_driver
cogl_renderer_get_n_fragment_texture_units
cogl_renderer_error_get_type
-cogl_renderer_error_quark
+cogl_renderer_error_domain
cogl_renderer_get_winsys_id
cogl_renderer_new
cogl_renderer_remove_constraint
@@ -766,7 +766,7 @@ cogl_swap_chain_new
cogl_swap_chain_set_has_alpha
cogl_swap_chain_set_length
-cogl_texture_error_quark
+cogl_texture_error_domain
cogl_texture_flags_get_type
cogl_texture_get_data
cogl_texture_get_format
@@ -783,7 +783,7 @@ cogl_texture_new_from_foreign
cogl_texture_new_from_sub_texture
cogl_texture_new_with_size
#ifdef COGL_HAS_X11
-cogl_texture_pixmap_x11_error_quark
+cogl_texture_pixmap_x11_error_domain
cogl_texture_pixmap_x11_is_using_tfp_extension
cogl_texture_pixmap_x11_new
cogl_texture_pixmap_x11_set_damage_object
@@ -908,7 +908,7 @@ _cogl_atlas_texture_new_from_bitmap
_cogl_atlas_texture_new_with_size
_cogl_atlas_texture_remove_reorganize_callback
_cogl_context_get_default
-_cogl_error_quark
+_cogl_system_error_domain
_cogl_texture_associate_framebuffer
_cogl_texture_can_hardware_repeat
_cogl_texture_determine_internal_format
diff --git a/cogl/cogl2-compatibility.c b/cogl/cogl2-compatibility.c
index a474c89d..fa03368b 100644
--- a/cogl/cogl2-compatibility.c
+++ b/cogl/cogl2-compatibility.c
@@ -57,7 +57,7 @@ cogl_texture_3d_error_quark (void);
CoglBool
cogl_index_buffer_allocate (CoglIndexBuffer *indices,
- GError *error);
+ CoglError *error);
CoglBool
cogl_is_journal (void *object);
@@ -97,7 +97,7 @@ cogl_texture_3d_error_quark (void)
CoglBool
cogl_index_buffer_allocate (CoglIndexBuffer *indices,
- GError *error)
+ CoglError *error)
{
return TRUE;
}
diff --git a/cogl/driver/gl/cogl-framebuffer-gl-private.h b/cogl/driver/gl/cogl-framebuffer-gl-private.h
index 4a616a15..5ab38172 100644
--- a/cogl/driver/gl/cogl-framebuffer-gl-private.h
+++ b/cogl/driver/gl/cogl-framebuffer-gl-private.h
@@ -30,7 +30,7 @@
CoglBool
_cogl_offscreen_gl_allocate (CoglOffscreen *offscreen,
- GError **error);
+ CoglError **error);
void
_cogl_offscreen_gl_free (CoglOffscreen *offscreen);
diff --git a/cogl/driver/gl/cogl-framebuffer-gl.c b/cogl/driver/gl/cogl-framebuffer-gl.c
index 38ef260b..d1e18b61 100644
--- a/cogl/driver/gl/cogl-framebuffer-gl.c
+++ b/cogl/driver/gl/cogl-framebuffer-gl.c
@@ -29,6 +29,7 @@
#include "cogl-context-private.h"
#include "cogl-framebuffer-private.h"
#include "cogl-framebuffer-gl-private.h"
+#include "cogl-error-private.h"
#include <glib.h>
@@ -692,7 +693,7 @@ _cogl_framebuffer_try_creating_gl_fbo (CoglContext *ctx,
CoglBool
_cogl_offscreen_gl_allocate (CoglOffscreen *offscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *fb = COGL_FRAMEBUFFER (offscreen);
CoglContext *ctx = fb->context;
@@ -711,9 +712,9 @@ _cogl_offscreen_gl_allocate (CoglOffscreen *offscreen,
_cogl_texture_associate_framebuffer (offscreen->depth_texture, fb);
else
{
- g_set_error (error, COGL_FRAMEBUFFER_ERROR,
- COGL_FRAMEBUFFER_ERROR_ALLOCATE,
- "Failed to allocate depth texture for framebuffer");
+ _cogl_set_error (error, COGL_FRAMEBUFFER_ERROR,
+ COGL_FRAMEBUFFER_ERROR_ALLOCATE,
+ "Failed to allocate depth texture for framebuffer");
}
}
@@ -824,9 +825,9 @@ _cogl_offscreen_gl_allocate (CoglOffscreen *offscreen,
}
else
{
- g_set_error (error, COGL_FRAMEBUFFER_ERROR,
- COGL_FRAMEBUFFER_ERROR_ALLOCATE,
- "Failed to create an OpenGL framebuffer object");
+ _cogl_set_error (error, COGL_FRAMEBUFFER_ERROR,
+ COGL_FRAMEBUFFER_ERROR_ALLOCATE,
+ "Failed to create an OpenGL framebuffer object");
return FALSE;
}
}
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/driver/gl/gl/cogl-driver-gl.c
index 991440f7..593942bc 100644
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -33,6 +33,7 @@
#include "cogl-feature-private.h"
#include "cogl-renderer-private.h"
#include "cogl-framebuffer-gl-private.h"
+#include "cogl-error-private.h"
static CoglBool
_cogl_driver_pixel_format_from_gl_internal (CoglContext *context,
@@ -276,14 +277,14 @@ _cogl_get_gl_version (CoglContext *ctx,
static CoglBool
check_gl_version (CoglContext *ctx,
- GError **error)
+ CoglError **error)
{
int major, minor;
const char *gl_extensions;
if (!_cogl_get_gl_version (ctx, &major, &minor))
{
- g_set_error (error,
+ _cogl_set_error (error,
COGL_DRIVER_ERROR,
COGL_DRIVER_ERROR_UNKNOWN_VERSION,
"The OpenGL version could not be determined");
@@ -300,7 +301,7 @@ check_gl_version (CoglContext *ctx,
extension */
if (!_cogl_check_extension ("GL_ARB_multitexture", gl_extensions))
{
- g_set_error (error,
+ _cogl_set_error (error,
COGL_DRIVER_ERROR,
COGL_DRIVER_ERROR_INVALID_VERSION,
"The OpenGL driver is missing "
@@ -311,7 +312,7 @@ check_gl_version (CoglContext *ctx,
/* OpenGL 1.2 is required */
if (!COGL_CHECK_GL_VERSION (major, minor, 1, 2))
{
- g_set_error (error,
+ _cogl_set_error (error,
COGL_DRIVER_ERROR,
COGL_DRIVER_ERROR_INVALID_VERSION,
"The OpenGL version of your driver (%i.%i) "
@@ -325,7 +326,7 @@ check_gl_version (CoglContext *ctx,
static CoglBool
_cogl_driver_update_features (CoglContext *ctx,
- GError **error)
+ CoglError **error)
{
CoglPrivateFeatureFlags private_flags = 0;
CoglFeatureFlags flags = 0;
diff --git a/cogl/driver/gl/gles/cogl-driver-gles.c b/cogl/driver/gl/gles/cogl-driver-gles.c
index 85811e98..d3e557cd 100644
--- a/cogl/driver/gl/gles/cogl-driver-gles.c
+++ b/cogl/driver/gl/gles/cogl-driver-gles.c
@@ -184,7 +184,7 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context,
static CoglBool
_cogl_driver_update_features (CoglContext *context,
- GError **error)
+ CoglError **error)
{
CoglPrivateFeatureFlags private_flags = 0;
CoglFeatureFlags flags = 0;
diff --git a/cogl/winsys/cogl-texture-pixmap-x11.c b/cogl/winsys/cogl-texture-pixmap-x11.c
index aebf8e68..a3f99e64 100644
--- a/cogl/winsys/cogl-texture-pixmap-x11.c
+++ b/cogl/winsys/cogl-texture-pixmap-x11.c
@@ -47,6 +47,7 @@
#include "cogl-winsys-private.h"
#include "cogl-pipeline-opengl-private.h"
#include "cogl-xlib.h"
+#include "cogl-error-private.h"
#include <X11/Xlib.h>
#include <X11/Xutil.h>
@@ -64,7 +65,7 @@ COGL_TEXTURE_DEFINE (TexturePixmapX11, texture_pixmap_x11);
static const CoglTextureVtable cogl_texture_pixmap_x11_vtable;
-GQuark
+uint32_t
cogl_texture_pixmap_x11_error_quark (void)
{
return g_quark_from_static_string ("cogl-texture-pixmap-error-quark");
@@ -273,7 +274,7 @@ CoglTexturePixmapX11 *
cogl_texture_pixmap_x11_new (CoglContext *ctxt,
uint32_t pixmap,
CoglBool automatic_updates,
- GError **error)
+ CoglError **error)
{
CoglTexturePixmapX11 *tex_pixmap = g_new (CoglTexturePixmapX11, 1);
Display *display = cogl_xlib_get_display ();
@@ -300,7 +301,7 @@ cogl_texture_pixmap_x11_new (CoglContext *ctxt,
&pixmap_border_width, &tex_pixmap->depth))
{
g_free (tex_pixmap);
- g_set_error (error,
+ _cogl_set_error (error,
COGL_TEXTURE_PIXMAP_X11_ERROR,
COGL_TEXTURE_PIXMAP_X11_ERROR_X11,
"Unable to query pixmap size");
@@ -312,7 +313,7 @@ cogl_texture_pixmap_x11_new (CoglContext *ctxt,
if (!XGetWindowAttributes (display, pixmap_root_window, &window_attributes))
{
g_free (tex_pixmap);
- g_set_error (error,
+ _cogl_set_error (error,
COGL_TEXTURE_PIXMAP_X11_ERROR,
COGL_TEXTURE_PIXMAP_X11_ERROR_X11,
"Unable to query root window attributes");
diff --git a/cogl/winsys/cogl-texture-pixmap-x11.h b/cogl/winsys/cogl-texture-pixmap-x11.h
index c517762d..9770bfa7 100644
--- a/cogl/winsys/cogl-texture-pixmap-x11.h
+++ b/cogl/winsys/cogl-texture-pixmap-x11.h
@@ -59,7 +59,7 @@ typedef enum
/**
* COGL_TEXTURE_PIXMAP_X11_ERROR:
*
- * #GError domain for texture-pixmap-x11 errors.
+ * #CoglError domain for texture-pixmap-x11 errors.
*
* Since: 1.10
*/
@@ -78,7 +78,7 @@ typedef enum {
COGL_TEXTURE_PIXMAP_X11_ERROR_X11,
} CoglTexturePixmapX11Error;
-GQuark cogl_texture_pixmap_x11_error_quark (void);
+uint32_t cogl_texture_pixmap_x11_error_quark (void);
/**
* cogl_texture_pixmap_x11_new:
@@ -86,7 +86,7 @@ GQuark cogl_texture_pixmap_x11_error_quark (void);
* @pixmap: A X11 pixmap ID
* @automatic_updates: Whether to automatically copy the contents of
* the pixmap to the texture.
- * @error: A #GError for exceptions
+ * @error: A #CoglError for exceptions
*
* Creates a texture that contains the contents of @pixmap. If
* @automatic_updates is %TRUE then Cogl will attempt to listen for
@@ -102,7 +102,7 @@ CoglTexturePixmapX11 *
cogl_texture_pixmap_x11_new (CoglContext *context,
uint32_t pixmap,
CoglBool automatic_updates,
- GError **error);
+ CoglError **error);
/**
* cogl_texture_pixmap_x11_update_area:
diff --git a/cogl/winsys/cogl-winsys-egl-android.c b/cogl/winsys/cogl-winsys-egl-android.c
index 269d65d8..d0143703 100644
--- a/cogl/winsys/cogl-winsys-egl-android.c
+++ b/cogl/winsys/cogl-winsys-egl-android.c
@@ -69,7 +69,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer;
@@ -92,7 +92,7 @@ error:
static CoglBool
_cogl_winsys_egl_context_created (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglRendererEGL *egl_renderer = renderer->winsys;
@@ -154,7 +154,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
return TRUE;
fail:
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
return FALSE;
@@ -162,7 +162,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayAndroid *android_display;
@@ -184,7 +184,7 @@ _cogl_winsys_egl_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
EGLConfig egl_config,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -195,7 +195,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
if (android_display->have_onscreen)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"EGL platform only supports a single onscreen window");
return FALSE;
diff --git a/cogl/winsys/cogl-winsys-egl-gdl.c b/cogl/winsys/cogl-winsys-egl-gdl.c
index 8d57904a..f8b4a13a 100644
--- a/cogl/winsys/cogl-winsys-egl-gdl.c
+++ b/cogl/winsys/cogl-winsys-egl-gdl.c
@@ -67,7 +67,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer;
CoglRendererGDL *gdl_renderer;
@@ -91,7 +91,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
rc = gdl_init (NULL);
if (rc != GDL_SUCCESS)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"GDL initialize failed. %s",
gdl_get_error_string (rc));
@@ -101,7 +101,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
rc = gdl_get_display_info (GDL_DISPLAY_ID_0, &gdl_display_info);
if (rc != GDL_SUCCESS)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"GDL failed to get display information: %s",
gdl_get_error_string (rc));
@@ -120,7 +120,7 @@ error:
static CoglBool
_cogl_winsys_egl_context_created (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglRendererEGL *egl_renderer = renderer->winsys;
@@ -162,14 +162,14 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
return TRUE;
fail:
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
return FALSE;
}
static CoglBool
-gdl_plane_init (CoglDisplay *display, GError **error)
+gdl_plane_init (CoglDisplay *display, CoglError **error)
{
CoglBool ret = TRUE;
gdl_color_space_t colorSpace = GDL_COLOR_SPACE_RGB;
@@ -180,7 +180,7 @@ gdl_plane_init (CoglDisplay *display, GError **error)
if (!display->gdl_plane)
{
- g_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
+ _cogl_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
"No GDL plane specified with "
"cogl_gdl_display_set_plane");
return FALSE;
@@ -189,7 +189,7 @@ gdl_plane_init (CoglDisplay *display, GError **error)
rc = gdl_init (NULL);
if (rc != GDL_SUCCESS)
{
- g_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
+ _cogl_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
"GDL initialize failed. %s", gdl_get_error_string (rc));
return FALSE;
}
@@ -197,7 +197,7 @@ gdl_plane_init (CoglDisplay *display, GError **error)
rc = gdl_get_display_info (GDL_DISPLAY_ID_0, &display_info);
if (rc != GDL_SUCCESS)
{
- g_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
+ _cogl_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
"GDL failed to get display infomation: %s",
gdl_get_error_string (rc));
gdl_close ();
@@ -243,7 +243,7 @@ gdl_plane_init (CoglDisplay *display, GError **error)
if (rc != GDL_SUCCESS)
{
- g_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
+ _cogl_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_CREATE_CONTEXT,
"GDL configuration failed: %s.", gdl_get_error_string (rc));
ret = FALSE;
}
@@ -255,7 +255,7 @@ gdl_plane_init (CoglDisplay *display, GError **error)
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayGDL *gdl_display;
@@ -294,7 +294,7 @@ _cogl_winsys_egl_cleanup_context (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
EGLConfig egl_config,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -305,7 +305,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
if (gdl_display->have_onscreen)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"EGL platform only supports a single onscreen window");
return FALSE;
diff --git a/cogl/winsys/cogl-winsys-egl-kms.c b/cogl/winsys/cogl-winsys-egl-kms.c
index e1d098e7..ff538e24 100644
--- a/cogl/winsys/cogl-winsys-egl-kms.c
+++ b/cogl/winsys/cogl-winsys-egl-kms.c
@@ -52,6 +52,7 @@
#include "cogl-kms-renderer.h"
#include "cogl-kms-display.h"
#include "cogl-version.h"
+#include "cogl-error-private.h"
static const CoglWinsysEGLVtable _cogl_winsys_egl_vtable;
@@ -115,7 +116,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer;
CoglRendererKMS *kms_renderer;
@@ -131,7 +132,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
if (kms_renderer->fd < 0)
{
/* Probably permissions error */
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Couldn't open %s", device_name);
return FALSE;
@@ -140,7 +141,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
kms_renderer->gbm = gbm_create_device (kms_renderer->fd);
if (kms_renderer->gbm == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Couldn't create gbm device");
goto close_fd;
@@ -149,7 +150,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
egl_renderer->edpy = eglGetDisplay ((EGLNativeDisplayType)kms_renderer->gbm);
if (egl_renderer->edpy == EGL_NO_DISPLAY)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Couldn't get eglDisplay");
goto destroy_gbm_device;
@@ -264,7 +265,7 @@ find_output (int _index,
drmModeRes *resources,
int *excluded_connectors,
int n_excluded_connectors,
- GError **error)
+ CoglError **error)
{
char *connector_env_name = g_strdup_printf ("COGL_KMS_CONNECTOR%d", _index);
char *mode_env_name;
@@ -288,7 +289,7 @@ find_output (int _index,
excluded_connectors, n_excluded_connectors);
if (connector == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"No currently active connector found");
return NULL;
@@ -340,7 +341,7 @@ find_output (int _index,
if (!found)
{
g_free (mode_env_name);
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"COGL_KMS_CONNECTOR%d_MODE of %s could not be found",
_index, name);
@@ -384,7 +385,7 @@ setup_crtc_modes (CoglDisplay *display, int fb_id)
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayKMS *kms_display;
@@ -400,7 +401,7 @@ _cogl_winsys_egl_display_setup (CoglDisplay *display,
resources = drmModeGetResources (kms_renderer->fd);
if (!resources)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"drmModeGetResources failed");
return FALSE;
@@ -440,7 +441,7 @@ _cogl_winsys_egl_display_setup (CoglDisplay *display,
&output0->mode,
&output1->mode))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Failed to find matching modes for mirroring");
return FALSE;
@@ -508,7 +509,7 @@ _cogl_winsys_egl_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_context_created (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayKMS *kms_display = egl_display->platform;
@@ -522,7 +523,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
GBM_BO_USE_RENDERING);
if (!kms_display->dummy_gbm_surface)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Failed to create dummy GBM surface");
return FALSE;
@@ -535,7 +536,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
NULL);
if (egl_display->dummy_surface == EGL_NO_SURFACE)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Failed to create dummy EGL surface");
return FALSE;
@@ -546,7 +547,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
egl_display->dummy_surface,
egl_display->egl_context))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Failed to make context current");
return FALSE;
@@ -749,7 +750,7 @@ _cogl_winsys_onscreen_swap_buffers (CoglOnscreen *onscreen)
static CoglBool
_cogl_winsys_egl_context_init (CoglContext *context,
- GError **error)
+ CoglError **error)
{
COGL_FLAGS_SET (context->features,
COGL_FEATURE_ID_SWAP_BUFFERS_EVENT, TRUE);
@@ -762,7 +763,7 @@ _cogl_winsys_egl_context_init (CoglContext *context,
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -793,7 +794,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
if (!kms_onscreen->surface)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Failed to allocate surface");
return FALSE;
@@ -806,7 +807,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
NULL);
if (egl_onscreen->egl_surface == EGL_NO_SURFACE)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Failed to allocate surface");
return FALSE;
diff --git a/cogl/winsys/cogl-winsys-egl-null.c b/cogl/winsys/cogl-winsys-egl-null.c
index 65da170a..ee817e09 100644
--- a/cogl/winsys/cogl-winsys-egl-null.c
+++ b/cogl/winsys/cogl-winsys-egl-null.c
@@ -56,7 +56,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer;
@@ -79,7 +79,7 @@ error:
static CoglBool
_cogl_winsys_egl_context_created (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglRendererEGL *egl_renderer = renderer->winsys;
@@ -120,7 +120,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
return TRUE;
fail:
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
return FALSE;
@@ -128,7 +128,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayNull *null_display;
@@ -164,7 +164,7 @@ _cogl_winsys_egl_cleanup_context (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
EGLConfig egl_config,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -175,7 +175,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
if (null_display->have_onscreen)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"EGL platform only supports a single onscreen window");
return FALSE;
diff --git a/cogl/winsys/cogl-winsys-egl-private.h b/cogl/winsys/cogl-winsys-egl-private.h
index eeb7028c..3f092aec 100644
--- a/cogl/winsys/cogl-winsys-egl-private.h
+++ b/cogl/winsys/cogl-winsys-egl-private.h
@@ -34,19 +34,19 @@ typedef struct _CoglWinsysEGLVtable
{
CoglBool
(* display_setup) (CoglDisplay *display,
- GError **error);
+ CoglError **error);
void
(* display_destroy) (CoglDisplay *display);
CoglBool
(* context_created) (CoglDisplay *display,
- GError **error);
+ CoglError **error);
void
(* cleanup_context) (CoglDisplay *display);
CoglBool
- (* context_init) (CoglContext *context, GError **error);
+ (* context_init) (CoglContext *context, CoglError **error);
void
(* context_deinit) (CoglContext *context);
@@ -54,7 +54,7 @@ typedef struct _CoglWinsysEGLVtable
CoglBool
(* onscreen_init) (CoglOnscreen *onscreen,
EGLConfig config,
- GError **error);
+ CoglError **error);
void
(* onscreen_deinit) (CoglOnscreen *onscreen);
@@ -159,6 +159,6 @@ _cogl_egl_destroy_image (CoglContext *ctx,
CoglBool
_cogl_winsys_egl_renderer_connect_common (CoglRenderer *renderer,
- GError **error);
+ CoglError **error);
#endif /* __COGL_WINSYS_EGL_PRIVATE_H */
diff --git a/cogl/winsys/cogl-winsys-egl-wayland.c b/cogl/winsys/cogl-winsys-egl-wayland.c
index 6bc85b95..feeb529d 100644
--- a/cogl/winsys/cogl-winsys-egl-wayland.c
+++ b/cogl/winsys/cogl-winsys-egl-wayland.c
@@ -38,6 +38,7 @@
#include "cogl-renderer-private.h"
#include "cogl-onscreen-private.h"
#include "cogl-wayland-renderer.h"
+#include "cogl-error-private.h"
static const CoglWinsysEGLVtable _cogl_winsys_egl_vtable;
@@ -108,7 +109,7 @@ static const struct wl_registry_listener registry_listener = {
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer;
CoglRendererWayland *wayland_renderer;
@@ -144,7 +145,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
wayland_renderer->wayland_display = wl_display_connect (NULL);
if (!wayland_renderer->wayland_display)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Failed to connect wayland display");
goto error;
@@ -183,7 +184,7 @@ error:
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayWayland *wayland_display;
@@ -204,7 +205,7 @@ _cogl_winsys_egl_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_context_created (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglRendererEGL *egl_renderer = renderer->winsys;
@@ -255,7 +256,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
return TRUE;
fail:
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
return FALSE;
@@ -290,7 +291,7 @@ _cogl_winsys_egl_cleanup_context (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_context_init (CoglContext *context,
- GError **error)
+ CoglError **error)
{
context->feature_flags |= COGL_FEATURE_ONSCREEN_MULTIPLE;
COGL_FLAGS_SET (context->features,
@@ -305,7 +306,7 @@ _cogl_winsys_egl_context_init (CoglContext *context,
static CoglBool
_cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
EGLConfig egl_config,
- GError **error)
+ CoglError **error)
{
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
CoglOnscreenWayland *wayland_onscreen;
@@ -322,7 +323,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
wl_compositor_create_surface (wayland_renderer->wayland_compositor);
if (!wayland_onscreen->wayland_surface)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Error while creating wayland surface for CoglOnscreen");
return FALSE;
@@ -338,7 +339,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
cogl_framebuffer_get_height (framebuffer));
if (!wayland_onscreen->wayland_egl_native_window)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Error while creating wayland egl native window "
"for CoglOnscreen");
diff --git a/cogl/winsys/cogl-winsys-egl-x11.c b/cogl/winsys/cogl-winsys-egl-x11.c
index 1b02ac09..fca7609f 100644
--- a/cogl/winsys/cogl-winsys-egl-x11.c
+++ b/cogl/winsys/cogl-winsys-egl-x11.c
@@ -42,6 +42,7 @@
#include "cogl-texture-pixmap-x11-private.h"
#include "cogl-texture-2d-private.h"
+#include "cogl-error-private.h"
#define COGL_ONSCREEN_X11_EVENT_MASK StructureNotifyMask
@@ -194,7 +195,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer;
CoglXlibRenderer *xlib_renderer;
@@ -223,7 +224,7 @@ error:
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglDisplayXlib *xlib_display;
@@ -244,7 +245,7 @@ _cogl_winsys_egl_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_egl_context_init (CoglContext *context,
- GError **error)
+ CoglError **error)
{
cogl_xlib_renderer_add_filter (context->display->renderer,
event_filter_cb,
@@ -271,7 +272,7 @@ _cogl_winsys_egl_context_deinit (CoglContext *context)
static CoglBool
_cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
EGLConfig egl_config,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -312,7 +313,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
char message[1000];
XGetErrorText (xlib_renderer->xdpy, xerror,
message, sizeof (message));
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Unable to query geometry of foreign "
"xid 0x%08lX: %s",
@@ -347,7 +348,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
xvisinfo = get_visual_info (display, egl_config);
if (xvisinfo == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Unable to retrieve the X11 visual of context's "
"fbconfig");
@@ -389,7 +390,7 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen,
char message[1000];
XGetErrorText (xlib_renderer->xdpy, xerror,
message, sizeof (message));
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"X error while creating Window for CoglOnscreen: %s",
message);
@@ -510,7 +511,7 @@ _cogl_winsys_onscreen_x11_get_window_xid (CoglOnscreen *onscreen)
static CoglBool
_cogl_winsys_egl_context_created (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglDisplayEGL *egl_display = display->winsys;
@@ -575,7 +576,7 @@ _cogl_winsys_egl_context_created (CoglDisplay *display,
return TRUE;
fail:
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
return FALSE;
diff --git a/cogl/winsys/cogl-winsys-egl.c b/cogl/winsys/cogl-winsys-egl.c
index 5257a631..26acab73 100644
--- a/cogl/winsys/cogl-winsys-egl.c
+++ b/cogl/winsys/cogl-winsys-egl.c
@@ -39,6 +39,7 @@
#include "cogl-renderer-private.h"
#include "cogl-onscreen-template-private.h"
#include "cogl-gles2-context-private.h"
+#include "cogl-error-private.h"
#include "cogl-private.h"
@@ -168,7 +169,7 @@ check_egl_extensions (CoglRenderer *renderer)
CoglBool
_cogl_winsys_egl_renderer_connect_common (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglRendererEGL *egl_renderer = renderer->winsys;
@@ -176,7 +177,7 @@ _cogl_winsys_egl_renderer_connect_common (CoglRenderer *renderer,
&egl_renderer->egl_version_major,
&egl_renderer->egl_version_minor))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Couldn't initialize EGL");
return FALSE;
@@ -189,7 +190,7 @@ _cogl_winsys_egl_renderer_connect_common (CoglRenderer *renderer,
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
/* This function must be overridden by a platform winsys */
g_assert_not_reached ();
@@ -256,7 +257,7 @@ egl_attributes_from_framebuffer_config (CoglDisplay *display,
static CoglBool
try_create_context (CoglDisplay *display,
CoglBool with_stencil_buffer,
- GError **error)
+ CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglDisplayEGL *egl_display = display->winsys;
@@ -319,7 +320,7 @@ try_create_context (CoglDisplay *display,
return TRUE;
fail:
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
return FALSE;
@@ -373,7 +374,7 @@ cleanup_context (CoglDisplay *display)
}
static CoglBool
-create_context (CoglDisplay *display, GError **error)
+create_context (CoglDisplay *display, CoglError **error)
{
CoglDisplayEGL *egl_display = display->winsys;
@@ -390,7 +391,7 @@ create_context (CoglDisplay *display, GError **error)
}
else
{
- g_clear_error (error);
+ _cogl_clear_error (error);
cleanup_context (display);
egl_display->stencil_disabled = TRUE;
return try_create_context (display, FALSE, error);
@@ -416,7 +417,7 @@ _cogl_winsys_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayEGL *egl_display;
CoglRenderer *renderer = display->renderer;
@@ -455,7 +456,7 @@ error:
}
static CoglBool
-_cogl_winsys_context_init (CoglContext *context, GError **error)
+_cogl_winsys_context_init (CoglContext *context, CoglError **error)
{
CoglRenderer *renderer = context->display->renderer;
CoglDisplayEGL *egl_display = context->display->winsys;
@@ -514,7 +515,7 @@ typedef struct _CoglGLES2ContextEGL
} CoglGLES2ContextEGL;
static void *
-_cogl_winsys_context_create_gles2_context (CoglContext *ctx, GError **error)
+_cogl_winsys_context_create_gles2_context (CoglContext *ctx, CoglError **error)
{
CoglRendererEGL *egl_renderer = ctx->display->renderer->winsys;
CoglDisplayEGL *egl_display = ctx->display->winsys;
@@ -531,7 +532,7 @@ _cogl_winsys_context_create_gles2_context (CoglContext *ctx, GError **error)
attribs);
if (egl_context == EGL_NO_CONTEXT)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_GLES2_CONTEXT,
"%s", get_error_string ());
return NULL;
@@ -557,7 +558,7 @@ _cogl_winsys_destroy_gles2_context (CoglGLES2Context *gles2_ctx)
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -585,7 +586,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
&config_count);
if (status != EGL_TRUE || config_count == 0)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Failed to find a suitable EGL configuration");
return FALSE;
@@ -779,7 +780,7 @@ _cogl_winsys_save_context (CoglContext *ctx)
}
static CoglBool
-_cogl_winsys_set_gles2_context (CoglGLES2Context *gles2_ctx, GError **error)
+_cogl_winsys_set_gles2_context (CoglGLES2Context *gles2_ctx, CoglError **error)
{
CoglContext *ctx = gles2_ctx->context;
CoglDisplayEGL *egl_display = ctx->display->winsys;
@@ -798,7 +799,7 @@ _cogl_winsys_set_gles2_context (CoglGLES2Context *gles2_ctx, GError **error)
if (!status)
{
- g_set_error (error,
+ _cogl_set_error (error,
COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_MAKE_CURRENT,
"Failed to make gles2 context current");
diff --git a/cogl/winsys/cogl-winsys-glx.c b/cogl/winsys/cogl-winsys-glx.c
index b24ebf19..6716c7c6 100644
--- a/cogl/winsys/cogl-winsys-glx.c
+++ b/cogl/winsys/cogl-winsys-glx.c
@@ -48,6 +48,7 @@
#include "cogl-xlib-renderer.h"
#include "cogl-util.h"
#include "cogl-winsys-glx-private.h"
+#include "cogl-error-private.h"
#include <stdlib.h>
#include <sys/types.h>
@@ -261,7 +262,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
resolve_core_glx_functions (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglGLXRenderer *glx_renderer;
@@ -306,7 +307,7 @@ resolve_core_glx_functions (CoglRenderer *renderer,
!g_module_symbol (glx_renderer->libgl_module, "glXGetProcAddressARB",
(void **) &glx_renderer->glXGetProcAddress)))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Failed to resolve required GLX symbol");
return FALSE;
@@ -317,7 +318,7 @@ resolve_core_glx_functions (CoglRenderer *renderer,
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
CoglGLXRenderer *glx_renderer;
CoglXlibRenderer *xlib_renderer;
@@ -332,7 +333,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
if (renderer->driver != COGL_DRIVER_GL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"GLX Backend can only be used in conjunction with OpenGL");
goto error;
@@ -343,7 +344,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
if (glx_renderer->libgl_module == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"Failed to dynamically open the OpenGL library");
goto error;
@@ -356,7 +357,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
&glx_renderer->glx_error_base,
&glx_renderer->glx_event_base))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"XServer appears to lack required GLX support");
goto error;
@@ -370,7 +371,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
&glx_renderer->glx_minor)
|| !(glx_renderer->glx_major == 1 && glx_renderer->glx_minor >= 2))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"XServer appears to lack required GLX 1.2 support");
goto error;
@@ -386,7 +387,7 @@ error:
}
static CoglBool
-update_winsys_features (CoglContext *context, GError **error)
+update_winsys_features (CoglContext *context, CoglError **error)
{
CoglGLXDisplay *glx_display = context->display->winsys;
CoglXlibRenderer *xlib_renderer =
@@ -540,7 +541,7 @@ static CoglBool
find_fbconfig (CoglDisplay *display,
CoglFramebufferConfig *config,
GLXFBConfig *config_ret,
- GError **error)
+ CoglError **error)
{
CoglXlibRenderer *xlib_renderer =
_cogl_xlib_renderer_get_data (display->renderer);
@@ -559,7 +560,7 @@ find_fbconfig (CoglDisplay *display,
&n_configs);
if (!configs || n_configs == 0)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Failed to find any compatible fbconfigs");
ret = FALSE;
@@ -589,7 +590,7 @@ find_fbconfig (CoglDisplay *display,
}
}
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to find fbconfig with rgba visual");
ret = FALSE;
@@ -607,7 +608,7 @@ done:
}
static CoglBool
-create_context (CoglDisplay *display, GError **error)
+create_context (CoglDisplay *display, CoglError **error)
{
CoglGLXDisplay *glx_display = display->winsys;
CoglXlibRenderer *xlib_renderer =
@@ -616,7 +617,7 @@ create_context (CoglDisplay *display, GError **error)
CoglBool support_transparent_windows =
display->onscreen_template->config.swap_chain->has_alpha;
GLXFBConfig config;
- GError *fbconfig_error = NULL;
+ CoglError *fbconfig_error = NULL;
XSetWindowAttributes attrs;
XVisualInfo *xvisinfo;
GLXDrawable dummy_drawable;
@@ -629,11 +630,11 @@ create_context (CoglDisplay *display, GError **error)
&fbconfig_error);
if (!glx_display->found_fbconfig)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to find suitable fbconfig for the GLX context: %s",
fbconfig_error->message);
- g_error_free (fbconfig_error);
+ cogl_error_free (fbconfig_error);
return FALSE;
}
@@ -651,7 +652,7 @@ create_context (CoglDisplay *display, GError **error)
True);
if (glx_display->glx_context == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to create suitable GL context");
return FALSE;
@@ -672,7 +673,7 @@ create_context (CoglDisplay *display, GError **error)
config);
if (xvisinfo == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to retrieve the X11 visual");
return FALSE;
@@ -727,7 +728,7 @@ create_context (CoglDisplay *display, GError **error)
if (_cogl_xlib_renderer_untrap_errors (display->renderer, &old_state))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to select the newly created GLX context");
return FALSE;
@@ -774,7 +775,7 @@ _cogl_winsys_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglGLXDisplay *glx_display;
int i;
@@ -798,7 +799,7 @@ error:
}
static CoglBool
-_cogl_winsys_context_init (CoglContext *context, GError **error)
+_cogl_winsys_context_init (CoglContext *context, CoglError **error)
{
context->winsys = g_new0 (CoglContextGLX, 1);
@@ -819,7 +820,7 @@ _cogl_winsys_context_deinit (CoglContext *context)
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -832,7 +833,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
CoglOnscreenXlib *xlib_onscreen;
CoglOnscreenGLX *glx_onscreen;
GLXFBConfig fbconfig;
- GError *fbconfig_error = NULL;
+ CoglError *fbconfig_error = NULL;
_COGL_RETURN_VAL_IF_FAIL (glx_display->glx_context, FALSE);
@@ -840,11 +841,11 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
&fbconfig,
&fbconfig_error))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to find suitable fbconfig for the GLX context: %s",
fbconfig_error->message);
- g_error_free (fbconfig_error);
+ cogl_error_free (fbconfig_error);
return FALSE;
}
@@ -888,7 +889,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
{
char message[1000];
XGetErrorText (xlib_renderer->xdpy, xerror, message, sizeof(message));
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Unable to query geometry of foreign xid 0x%08lX: %s",
xwin, message);
@@ -922,7 +923,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
fbconfig);
if (xvisinfo == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Unable to retrieve the X11 visual of context's "
"fbconfig");
@@ -961,7 +962,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
char message[1000];
XGetErrorText (xlib_renderer->xdpy, xerror,
message, sizeof (message));
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"X error while creating Window for CoglOnscreen: %s",
message);
@@ -1113,7 +1114,7 @@ _cogl_winsys_onscreen_bind (CoglOnscreen *onscreen)
XSync (xlib_renderer->xdpy, False);
- /* FIXME: We should be reporting a GError here
+ /* FIXME: We should be reporting a CoglError here
*/
if (_cogl_xlib_renderer_untrap_errors (context->display->renderer,
&old_state))
@@ -1917,7 +1918,7 @@ _cogl_winsys_texture_pixmap_x11_update (CoglTexturePixmapX11 *tex_pixmap,
if (glx_tex_pixmap->glx_tex == NULL)
{
CoglPixelFormat texture_format;
- GError *error = NULL;
+ CoglError *error = NULL;
texture_format = (tex_pixmap->depth >= 32 ?
COGL_PIXEL_FORMAT_RGBA_8888_PRE :
@@ -1940,7 +1941,7 @@ _cogl_winsys_texture_pixmap_x11_update (CoglTexturePixmapX11 *tex_pixmap,
COGL_NOTE (TEXTURE_PIXMAP, "Falling back for %p because a "
"texture rectangle could not be created: %s",
tex_pixmap, error->message);
- g_error_free (error);
+ cogl_error_free (error);
free_glx_pixmap (ctx, glx_tex_pixmap);
return FALSE;
}
diff --git a/cogl/winsys/cogl-winsys-private.h b/cogl/winsys/cogl-winsys-private.h
index 3262d2fa..80686ef5 100644
--- a/cogl/winsys/cogl-winsys-private.h
+++ b/cogl/winsys/cogl-winsys-private.h
@@ -43,7 +43,7 @@
#include "cogl-poll.h"
-GQuark
+uint32_t
_cogl_winsys_error_quark (void);
#define COGL_WINSYS_ERROR (_cogl_winsys_error_quark ())
@@ -78,28 +78,28 @@ typedef struct _CoglWinsysVtable
CoglBool in_core);
CoglBool
- (*renderer_connect) (CoglRenderer *renderer, GError **error);
+ (*renderer_connect) (CoglRenderer *renderer, CoglError **error);
void
(*renderer_disconnect) (CoglRenderer *renderer);
CoglBool
- (*display_setup) (CoglDisplay *display, GError **error);
+ (*display_setup) (CoglDisplay *display, CoglError **error);
void
(*display_destroy) (CoglDisplay *display);
CoglBool
- (*context_init) (CoglContext *context, GError **error);
+ (*context_init) (CoglContext *context, CoglError **error);
void
(*context_deinit) (CoglContext *context);
void *
- (*context_create_gles2_context) (CoglContext *ctx, GError **error);
+ (*context_create_gles2_context) (CoglContext *ctx, CoglError **error);
CoglBool
- (*onscreen_init) (CoglOnscreen *onscreen, GError **error);
+ (*onscreen_init) (CoglOnscreen *onscreen, CoglError **error);
void
(*onscreen_deinit) (CoglOnscreen *onscreen);
@@ -176,7 +176,7 @@ typedef struct _CoglWinsysVtable
(*save_context) (CoglContext *ctx);
CoglBool
- (*set_gles2_context) (CoglGLES2Context *gles2_ctx, GError **error);
+ (*set_gles2_context) (CoglGLES2Context *gles2_ctx, CoglError **error);
void
(*restore_context) (CoglContext *ctx);
diff --git a/cogl/winsys/cogl-winsys-sdl.c b/cogl/winsys/cogl-winsys-sdl.c
index 95d5ab90..f3a71d31 100644
--- a/cogl/winsys/cogl-winsys-sdl.c
+++ b/cogl/winsys/cogl-winsys-sdl.c
@@ -37,6 +37,7 @@
#include "cogl-context-private.h"
#include "cogl-onscreen-private.h"
#include "cogl-winsys-sdl-private.h"
+#include "cogl-error-private.h"
typedef struct _CoglRendererSdl
{
@@ -84,12 +85,12 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
#ifndef COGL_HAS_SDL_GLES_SUPPORT
if (renderer->driver != COGL_DRIVER_GL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"The SDL winsys only supports the GL driver");
return FALSE;
@@ -98,7 +99,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
if (SDL_Init (SDL_INIT_VIDEO) == -1)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"SDL_Init failed: %s",
SDL_GetError ());
@@ -144,7 +145,7 @@ set_gl_attribs_from_framebuffer_config (CoglFramebufferConfig *config)
static CoglBool
_cogl_winsys_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplaySdl *sdl_display;
@@ -189,7 +190,7 @@ _cogl_winsys_display_setup (CoglDisplay *display,
if (sdl_display->surface == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"SDL_SetVideoMode failed: %s",
SDL_GetError ());
@@ -237,7 +238,7 @@ sdl_event_filter_cb (SDL_Event *event, void *data)
}
static CoglBool
-_cogl_winsys_context_init (CoglContext *context, GError **error)
+_cogl_winsys_context_init (CoglContext *context, CoglError **error)
{
CoglRenderer *renderer = context->display->renderer;
@@ -274,7 +275,7 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -284,7 +285,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
if (sdl_display->onscreen)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"SDL winsys only supports a single onscreen window");
return FALSE;
@@ -303,7 +304,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
if (sdl_display->surface == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"SDL_SetVideoMode failed: %s",
SDL_GetError ());
diff --git a/cogl/winsys/cogl-winsys-sdl2.c b/cogl/winsys/cogl-winsys-sdl2.c
index 8ea5919b..fd9d7d5b 100644
--- a/cogl/winsys/cogl-winsys-sdl2.c
+++ b/cogl/winsys/cogl-winsys-sdl2.c
@@ -86,11 +86,11 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
if (SDL_VideoInit (NULL) < 0)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"SDL_Init failed: %s",
SDL_GetError ());
@@ -140,7 +140,7 @@ set_gl_attribs_from_framebuffer_config (CoglFramebufferConfig *config)
static CoglBool
_cogl_winsys_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplaySdl2 *sdl_display;
const char * (* get_string_func) (GLenum name);
@@ -167,7 +167,7 @@ _cogl_winsys_display_setup (CoglDisplay *display,
SDL_WINDOW_HIDDEN);
if (sdl_display->dummy_window == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"SDL_CreateWindow failed: %s",
SDL_GetError ());
@@ -178,7 +178,7 @@ _cogl_winsys_display_setup (CoglDisplay *display,
if (sdl_display->context == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"SDL_GL_CreateContext failed: %s",
SDL_GetError ());
@@ -199,7 +199,7 @@ _cogl_winsys_display_setup (CoglDisplay *display,
* it's normal GL */
if (!g_ascii_isdigit (gl_version[0]))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"The GL driver was requested but SDL is using GLES");
goto error;
@@ -209,7 +209,7 @@ _cogl_winsys_display_setup (CoglDisplay *display,
case COGL_DRIVER_GLES2:
if (!g_str_has_prefix (gl_version, "OpenGL ES 2"))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"The GLES2 driver was requested but SDL is "
"not using GLES2");
@@ -220,7 +220,7 @@ _cogl_winsys_display_setup (CoglDisplay *display,
case COGL_DRIVER_GLES1:
if (!g_str_has_prefix (gl_version, "OpenGL ES 1"))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT,
"The GLES1 driver was requested but SDL is "
"not using GLES1");
@@ -240,7 +240,7 @@ error:
}
static CoglBool
-_cogl_winsys_context_init (CoglContext *context, GError **error)
+_cogl_winsys_context_init (CoglContext *context, CoglError **error)
{
CoglRenderer *renderer = context->display->renderer;
@@ -321,7 +321,7 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglOnscreenSdl2 *sdl_onscreen;
@@ -339,7 +339,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
if (window == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"SDL_CreateWindow failed: %s",
SDL_GetError ());
diff --git a/cogl/winsys/cogl-winsys-stub.c b/cogl/winsys/cogl-winsys-stub.c
index 26486227..aee70a91 100644
--- a/cogl/winsys/cogl-winsys-stub.c
+++ b/cogl/winsys/cogl-winsys-stub.c
@@ -76,7 +76,7 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
renderer->winsys = &_cogl_winsys_stub_dummy_ptr;
return TRUE;
@@ -90,14 +90,14 @@ _cogl_winsys_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
display->winsys = &_cogl_winsys_stub_dummy_ptr;
return TRUE;
}
static CoglBool
-_cogl_winsys_context_init (CoglContext *context, GError **error)
+_cogl_winsys_context_init (CoglContext *context, CoglError **error)
{
context->winsys = &_cogl_winsys_stub_dummy_ptr;
@@ -117,7 +117,7 @@ _cogl_winsys_context_deinit (CoglContext *context)
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
return TRUE;
}
diff --git a/cogl/winsys/cogl-winsys-wgl.c b/cogl/winsys/cogl-winsys-wgl.c
index 418e7286..7e2dc5d6 100644
--- a/cogl/winsys/cogl-winsys-wgl.c
+++ b/cogl/winsys/cogl-winsys-wgl.c
@@ -232,7 +232,7 @@ win32_event_filter_cb (MSG *msg, void *data)
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
- GError **error)
+ CoglError **error)
{
renderer->winsys = g_slice_new0 (CoglRendererWgl);
@@ -372,7 +372,7 @@ choose_pixel_format (CoglFramebufferConfig *config,
}
static CoglBool
-create_window_class (CoglDisplay *display, GError **error)
+create_window_class (CoglDisplay *display, CoglError **error)
{
CoglDisplayWgl *wgl_display = display->winsys;
char *class_name_ascii, *src;
@@ -415,7 +415,7 @@ create_window_class (CoglDisplay *display, GError **error)
if (wgl_display->window_class == 0)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to register window class");
return FALSE;
@@ -425,7 +425,7 @@ create_window_class (CoglDisplay *display, GError **error)
}
static CoglBool
-create_context (CoglDisplay *display, GError **error)
+create_context (CoglDisplay *display, CoglError **error)
{
CoglDisplayWgl *wgl_display = display->winsys;
@@ -451,7 +451,7 @@ create_context (CoglDisplay *display, GError **error)
if (wgl_display->dummy_hwnd == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to create dummy window");
return FALSE;
@@ -470,7 +470,7 @@ create_context (CoglDisplay *display, GError **error)
if (pf == 0 || !SetPixelFormat (wgl_display->dummy_dc, pf, &pfd))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to find suitable GL pixel format");
ReleaseDC (wgl_display->dummy_hwnd, wgl_display->dummy_dc);
@@ -485,7 +485,7 @@ create_context (CoglDisplay *display, GError **error)
if (wgl_display->wgl_context == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Unable to create suitable GL context");
return FALSE;
@@ -529,7 +529,7 @@ _cogl_winsys_display_destroy (CoglDisplay *display)
static CoglBool
_cogl_winsys_display_setup (CoglDisplay *display,
- GError **error)
+ CoglError **error)
{
CoglDisplayWgl *wgl_display;
@@ -587,7 +587,7 @@ get_wgl_extensions_string (HDC dc)
}
static CoglBool
-update_winsys_features (CoglContext *context, GError **error)
+update_winsys_features (CoglContext *context, CoglError **error)
{
CoglDisplayWgl *wgl_display = context->display->winsys;
CoglRendererWgl *wgl_renderer = context->display->renderer->winsys;
@@ -633,7 +633,7 @@ update_winsys_features (CoglContext *context, GError **error)
}
static CoglBool
-_cogl_winsys_context_init (CoglContext *context, GError **error)
+_cogl_winsys_context_init (CoglContext *context, CoglError **error)
{
CoglContextWgl *wgl_context;
@@ -733,7 +733,7 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
static CoglBool
_cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
- GError **error)
+ CoglError **error)
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *context = framebuffer->context;
@@ -789,7 +789,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
if (hwnd == NULL)
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Unable to create window");
return FALSE;
@@ -814,7 +814,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
if (pf == 0 || !SetPixelFormat (wgl_onscreen->client_dc, pf, &pfd))
{
- g_set_error (error, COGL_WINSYS_ERROR,
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
"Error setting pixel format on the window");
diff --git a/cogl/winsys/cogl-winsys.c b/cogl/winsys/cogl-winsys.c
index c6bcddec..8b8c6d17 100644
--- a/cogl/winsys/cogl-winsys.c
+++ b/cogl/winsys/cogl-winsys.c
@@ -30,7 +30,7 @@
#include <gmodule.h>
-GQuark
+uint32_t
_cogl_winsys_error_quark (void)
{
return g_quark_from_static_string ("cogl-winsys-error-quark");
diff --git a/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-docs.xml.in b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-docs.xml.in
index 55c88f74..ddfc9260 100644
--- a/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-docs.xml.in
+++ b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-docs.xml.in
@@ -62,6 +62,7 @@
</section>
<xi:include href="xml/cogl-object.xml"/>
+ <xi:include href="xml/cogl-error.xml"/>
<xi:include href="xml/cogl-context.xml"/>
<xi:include href="xml/cogl-poll.xml"/>
diff --git a/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
index ee10d445..5f6f959d 100644
--- a/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
+++ b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
@@ -11,6 +11,16 @@ cogl_object_set_user_data
</SECTION>
<SECTION>
+<FILE>cogl-error</FILE>
+<TITLE>Exception handling</TITLE>
+CoglError
+cogl_error_matches
+cogl_error_free
+cogl_error_copy
+COGL_GLIB_ERROR
+</SECTION>
+
+<SECTION>
<FILE>cogl-renderer</FILE>
<TITLE>CoglRenderer: Connect to a backend renderer</TITLE>
cogl_renderer_new
@@ -691,7 +701,7 @@ cogl_pipeline_add_layer_snippet
<SUBSECTION Private>
cogl_blend_string_error_get_type
-cogl_blend_string_error_quark
+cogl_blend_string_error_domain
</SECTION>
<SECTION>
diff --git a/examples/android/hello/jni/main.c b/examples/android/hello/jni/main.c
index dacbbab1..2c5bd9b4 100644
--- a/examples/android/hello/jni/main.c
+++ b/examples/android/hello/jni/main.c
@@ -40,7 +40,7 @@ typedef struct
static int test_init (TestData* data)
{
CoglOnscreen *onscreen;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
diff --git a/examples/cogl-crate.c b/examples/cogl-crate.c
index 9c7c20f2..c23daed8 100644
--- a/examples/cogl-crate.c
+++ b/examples/cogl-crate.c
@@ -144,7 +144,7 @@ main (int argc, char **argv)
CoglContext *ctx;
CoglOnscreen *onscreen;
CoglFramebuffer *fb;
- GError *error = NULL;
+ CoglError *error = NULL;
Data data;
PangoRectangle hello_label_size;
float fovy, aspect, z_near, z_2d, z_far;
diff --git a/examples/cogl-gles2-context.c b/examples/cogl-gles2-context.c
index 408852ab..70aed2f4 100644
--- a/examples/cogl-gles2-context.c
+++ b/examples/cogl-gles2-context.c
@@ -23,7 +23,7 @@ static gboolean
paint_cb (void *user_data)
{
Data *data = user_data;
- GError *error = NULL;
+ CoglError *error = NULL;
const CoglGLES2Vtable *gles2 = data->gles2_vtable;
/* Draw scene with GLES2 */
@@ -71,7 +71,7 @@ main (int argc, char **argv)
{
Data data;
CoglOnscreen *onscreen;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
diff --git a/examples/cogl-gles2-gears.c b/examples/cogl-gles2-gears.c
index 2952ca6d..e69447cb 100644
--- a/examples/cogl-gles2-gears.c
+++ b/examples/cogl-gles2-gears.c
@@ -560,7 +560,7 @@ paint_cb (void *user_data)
Data *data = user_data;
double elapsed = g_timer_elapsed (data->timer, NULL);
double dt = elapsed - data->last_elapsed;
- GError *error = NULL;
+ CoglError *error = NULL;
/* Draw scene with GLES2 */
if (!cogl_push_gles2_context (data->ctx,
@@ -755,7 +755,7 @@ main (int argc, char **argv)
{
Data data;
CoglOnscreen *onscreen;
- GError *error = NULL;
+ CoglError *error = NULL;
GSource *cogl_source;
GMainLoop *loop;
CoglRenderer *renderer;
diff --git a/examples/cogl-hello.c b/examples/cogl-hello.c
index cf0e8f6d..f8265f91 100644
--- a/examples/cogl-hello.c
+++ b/examples/cogl-hello.c
@@ -40,7 +40,7 @@ main (int argc, char **argv)
{
Data data;
CoglOnscreen *onscreen;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
diff --git a/examples/cogl-info.c b/examples/cogl-info.c
index 7c43fe2c..3eacdc39 100644
--- a/examples/cogl-info.c
+++ b/examples/cogl-info.c
@@ -170,7 +170,7 @@ main (int argc, char **argv)
CoglRenderer *renderer;
CoglDisplay *display;
CoglContext *ctx;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglWinsysID winsys_id;
const char *winsys_name;
diff --git a/examples/cogl-msaa.c b/examples/cogl-msaa.c
index 99f9b8d2..73f9c4e2 100644
--- a/examples/cogl-msaa.c
+++ b/examples/cogl-msaa.c
@@ -10,7 +10,7 @@ main (int argc, char **argv)
CoglContext *ctx;
CoglOnscreen *onscreen;
CoglFramebuffer *fb;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
@@ -49,7 +49,7 @@ main (int argc, char **argv)
{
fprintf (stderr, "Failed to allocate 4x msaa offscreen framebuffer, "
"disabling msaa for onscreen rendering: %s\n", error->message);
- g_error_free (error);
+ cogl_error_free (error);
cogl_framebuffer_set_samples_per_pixel (fb, 0);
error = NULL;
@@ -70,7 +70,7 @@ main (int argc, char **argv)
cogl_framebuffer_set_samples_per_pixel (offscreen_fb, 4);
if (!cogl_framebuffer_allocate (offscreen_fb, &error))
{
- g_error_free (error);
+ cogl_error_free (error);
error = NULL;
fprintf (stderr, "Failed to allocate 4x msaa offscreen framebuffer, "
"disabling msaa for offscreen rendering");
diff --git a/examples/cogl-sdl-hello.c b/examples/cogl-sdl-hello.c
index 1525deb8..41b99af2 100644
--- a/examples/cogl-sdl-hello.c
+++ b/examples/cogl-sdl-hello.c
@@ -68,7 +68,7 @@ main (int argc, char **argv)
{
CoglContext *ctx;
CoglOnscreen *onscreen;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
diff --git a/examples/cogl-sdl2-hello.c b/examples/cogl-sdl2-hello.c
index f4657711..5df40ab3 100644
--- a/examples/cogl-sdl2-hello.c
+++ b/examples/cogl-sdl2-hello.c
@@ -77,7 +77,7 @@ main (int argc, char **argv)
{
CoglContext *ctx;
CoglOnscreen *onscreen;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
diff --git a/examples/cogl-x11-foreign.c b/examples/cogl-x11-foreign.c
index 9397f4d4..ca9e3ed7 100644
--- a/examples/cogl-x11-foreign.c
+++ b/examples/cogl-x11-foreign.c
@@ -53,7 +53,7 @@ main (int argc, char **argv)
CoglOnscreen *onscreen;
CoglFramebuffer *fb;
CoglPipeline *pipeline;
- GError *error = NULL;
+ CoglError *error = NULL;
uint32_t visual;
XVisualInfo template, *xvisinfo;
int visinfos_count;
diff --git a/examples/cogl-x11-tfp.c b/examples/cogl-x11-tfp.c
index d42bcb15..dd193669 100644
--- a/examples/cogl-x11-tfp.c
+++ b/examples/cogl-x11-tfp.c
@@ -49,7 +49,7 @@ main (int argc, char **argv)
CoglContext *ctx;
CoglOnscreen *onscreen;
CoglFramebuffer *fb;
- GError *error = NULL;
+ CoglError *error = NULL;
uint32_t visual;
XVisualInfo template, *xvisinfo;
int visinfos_count;
diff --git a/examples/cogland.c b/examples/cogland.c
index d6f7bf8c..92738318 100644
--- a/examples/cogland.c
+++ b/examples/cogland.c
@@ -299,7 +299,7 @@ cogland_surface_attach_buffer (struct wl_client *wayland_client,
if (!buffer->texture)
{
- GError *error = NULL;
+ CoglError *error = NULL;
buffer->texture =
cogl_wayland_texture_2d_new_from_buffer (compositor->cogl_context,
@@ -453,7 +453,7 @@ cogland_compositor_create_output (CoglandCompositor *compositor,
{
CoglandOutput *output = g_slice_new0 (CoglandOutput);
CoglFramebuffer *fb;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglandMode *mode;
output->x = x;
@@ -694,7 +694,7 @@ main (int argc, char **argv)
{
CoglandCompositor compositor;
GMainLoop *loop;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglVertexP2C4 triangle_vertices[] = {
{0, 0.7, 0xff, 0x00, 0x00, 0x80},
{-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
diff --git a/tests/conform/test-blend-strings.c b/tests/conform/test-blend-strings.c
index 967d53af..e85e0de7 100644
--- a/tests/conform/test-blend-strings.c
+++ b/tests/conform/test-blend-strings.c
@@ -55,7 +55,7 @@ test_blend (TestState *state,
CoglHandle material;
CoglPipeline *pipeline;
CoglBool status;
- GError *error = NULL;
+ CoglError *error = NULL;
int y_off;
int x_off;
@@ -230,7 +230,7 @@ test_tex_combine (TestState *state,
CoglHandle material;
CoglBool status;
- GError *error = NULL;
+ CoglError *error = NULL;
int y_off;
int x_off;
diff --git a/tests/conform/test-gles2-context.c b/tests/conform/test-gles2-context.c
index d84c78e5..4f1e3907 100644
--- a/tests/conform/test-gles2-context.c
+++ b/tests/conform/test-gles2-context.c
@@ -21,7 +21,7 @@ test_push_pop_single_context (void)
CoglPipeline *pipeline;
CoglGLES2Context *gles2_ctx;
const CoglGLES2Vtable *gles2;
- GError *error = NULL;
+ CoglError *error = NULL;
offscreen_texture = COGL_TEXTURE (
cogl_texture_2d_new_with_size (ctx,
@@ -146,7 +146,7 @@ create_gles2_context (CoglTexture **offscreen_texture,
CoglGLES2Context **gles2_ctx,
const CoglGLES2Vtable **gles2)
{
- GError *error = NULL;
+ CoglError *error = NULL;
*offscreen_texture = COGL_TEXTURE (
cogl_texture_2d_new_with_size (ctx,
@@ -179,7 +179,7 @@ test_push_pop_multi_context (void)
CoglPipeline *pipeline1;
CoglGLES2Context *gles2_ctx1;
const CoglGLES2Vtable *gles21;
- GError *error = NULL;
+ CoglError *error = NULL;
create_gles2_context (&offscreen_texture0,
&offscreen0,
@@ -278,7 +278,7 @@ test_gles2_read_pixels (void)
CoglPipeline *pipeline;
CoglGLES2Context *gles2_ctx;
const CoglGLES2Vtable *gles2;
- GError *error = NULL;
+ CoglError *error = NULL;
GLubyte pixel[3];
GLuint fbo_handle;
@@ -684,7 +684,7 @@ test_gles2_context_fbo (void)
CoglPipeline *pipeline;
CoglGLES2Context *gles2_ctx;
GLuint program;
- GError *error = NULL;
+ CoglError *error = NULL;
create_gles2_context (&offscreen_texture,
&offscreen,
@@ -814,7 +814,7 @@ test_gles2_context_copy_tex_image (void)
CoglPipeline *pipeline;
CoglGLES2Context *gles2_ctx;
const CoglGLES2Vtable *gles2;
- GError *error = NULL;
+ CoglError *error = NULL;
GLuint tex;
GLint tex_uniform_location;
GLint pos_location;
diff --git a/tests/conform/test-just-vertex-shader.c b/tests/conform/test-just-vertex-shader.c
index 908fadef..d42b8b53 100644
--- a/tests/conform/test-just-vertex-shader.c
+++ b/tests/conform/test-just-vertex-shader.c
@@ -30,7 +30,7 @@ paint_legacy (TestState *state)
CoglHandle material = cogl_material_new ();
CoglTexture *tex;
CoglColor color;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglHandle shader, program;
cogl_color_init_from_4ub (&color, 0, 0, 0, 255);
@@ -100,7 +100,7 @@ paint (TestState *state)
CoglPipeline *pipeline = cogl_pipeline_new (ctx);
CoglTexture *tex;
CoglColor color;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglHandle shader, program;
cogl_color_init_from_4ub (&color, 0, 0, 0, 255);
diff --git a/tests/conform/test-multitexture.c b/tests/conform/test-multitexture.c
index aeb409cc..6eab806d 100644
--- a/tests/conform/test-multitexture.c
+++ b/tests/conform/test-multitexture.c
@@ -104,7 +104,7 @@ on_paint (ClutterActor *actor, TestState *state)
CoglHandle tex0, tex1;
CoglHandle material;
CoglBool status;
- GError *error = NULL;
+ CoglError *error = NULL;
float tex_coords[] = {
0, 0, 0.5, 0.5, /* tex0 */
0.5, 0.5, 1, 1 /* tex1 */
diff --git a/tests/conform/test-pipeline-user-matrix.c b/tests/conform/test-pipeline-user-matrix.c
index c9d18f6a..6bf6ed22 100644
--- a/tests/conform/test-pipeline-user-matrix.c
+++ b/tests/conform/test-pipeline-user-matrix.c
@@ -54,7 +54,7 @@ paint (TestState *state)
CoglTexture *tex0, *tex1;
CoglPipeline *pipeline;
CoglMatrix matrix;
- GError *error = NULL;
+ CoglError *error = NULL;
cogl_framebuffer_orthographic (fb,
0, 0,
diff --git a/tests/conform/test-point-sprite.c b/tests/conform/test-point-sprite.c
index d50611fb..5aa5b444 100644
--- a/tests/conform/test-point-sprite.c
+++ b/tests/conform/test-point-sprite.c
@@ -24,7 +24,7 @@ do_test (CoglBool check_orientation)
int fb_width = cogl_framebuffer_get_width (fb);
int fb_height = cogl_framebuffer_get_height (fb);
CoglPrimitive *prim;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglTexture2D *tex_2d;
CoglPipeline *pipeline, *solid_pipeline;
CoglBool res;
diff --git a/tests/conform/test-sub-texture.c b/tests/conform/test-sub-texture.c
index dd864384..fb6f7406 100644
--- a/tests/conform/test-sub-texture.c
+++ b/tests/conform/test-sub-texture.c
@@ -31,7 +31,6 @@ create_source (TestState *state)
int dx, dy;
uint8_t *data = g_malloc (SOURCE_SIZE * SOURCE_SIZE * 4);
CoglTexture2D *tex;
- GError *error = NULL;
/* Create a texture with a different coloured rectangle at each
corner */
@@ -61,8 +60,7 @@ create_source (TestState *state)
COGL_PIXEL_FORMAT_ANY,
SOURCE_SIZE * 4,
data,
- &error);
- g_assert_no_error (error);
+ NULL);
return tex;
}
@@ -72,7 +70,6 @@ create_test_texture (TestState *state)
CoglTexture2D *tex;
uint8_t *data = g_malloc (256 * 256 * 4), *p = data;
int x, y;
- GError *error = NULL;
/* Create a texture that is 256x256 where the red component ranges
from 0->255 along the x axis and the green component ranges from
@@ -93,9 +90,7 @@ create_test_texture (TestState *state)
COGL_PIXEL_FORMAT_ANY,
256 * 4,
data,
- &error);
- g_assert_no_error (error);
-
+ NULL);
g_free (data);
return tex;
diff --git a/tests/conform/test-texture-3d.c b/tests/conform/test-texture-3d.c
index 547e5329..a4933267 100644
--- a/tests/conform/test-texture-3d.c
+++ b/tests/conform/test-texture-3d.c
@@ -24,7 +24,7 @@ create_texture_3d (CoglContext *context)
uint8_t *data = g_malloc (TEX_IMAGE_STRIDE * TEX_DEPTH);
uint8_t *p = data;
CoglTexture3D *tex;
- GError *error = NULL;
+ CoglError *error = NULL;
for (z = 0; z < TEX_DEPTH; z++)
{
diff --git a/tests/conform/test-utils.c b/tests/conform/test-utils.c
index e712d14a..bbf9b05e 100644
--- a/tests/conform/test-utils.c
+++ b/tests/conform/test-utils.c
@@ -16,7 +16,7 @@ void
test_utils_init (TestFlags flags)
{
static int counter = 0;
- GError *error = NULL;
+ CoglError *error = NULL;
CoglOnscreen *onscreen = NULL;
CoglDisplay *display;
CoglRenderer *renderer;