diff options
author | Neil Roberts <neil@linux.intel.com> | 2013-06-27 09:57:02 +0100 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2013-06-27 14:22:54 +0100 |
commit | 4e0942d74c8d69aa48e0176bfecf27f64a950d0f (patch) | |
tree | 6bb20ad47bca1d3ddae646dd8d11d8d050fe413f | |
parent | f07febc8913b97fb828e7f2cc2857813af2d3657 (diff) | |
download | cogl-4e0942d74c8d69aa48e0176bfecf27f64a950d0f.tar.gz |
renderer: Don't allow the COGL_DRIVER env var to override application
Since e07d0fc7441 the COGL_DRIVER environment variable was able to
override the application's driver selection. This doesn't seem like a
good idea because if the application is specifying a driver explicitly
then presumably it can not work with any other driver. This patch
changes it so that if a driver is selected in the configuration and by
the application then they must match, otherwise it will fail with a
CoglError.
Reviewed-by: Robert Bragg <robert@linux.intel.com>
-rw-r--r-- | cogl/cogl-renderer.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/cogl/cogl-renderer.c b/cogl/cogl-renderer.c index ecbf8bd1..33e086c5 100644 --- a/cogl/cogl-renderer.c +++ b/cogl/cogl-renderer.c @@ -501,8 +501,22 @@ _cogl_renderer_choose_driver (CoglRenderer *renderer, if (driver_override == COGL_DRIVER_ANY) invalid_override = driver_name; } - else - driver_override = renderer->driver_override; + + if (renderer->driver_override != COGL_DRIVER_ANY) + { + if (driver_override != COGL_DRIVER_ANY && + renderer->driver_override != driver_override) + { + _cogl_set_error (error, + COGL_RENDERER_ERROR, + COGL_RENDERER_ERROR_BAD_CONSTRAINT, + "Application driver selection conflicts with driver " + "specified in configuration"); + return FALSE; + } + + driver_override = renderer->driver_override; + } if (driver_override != COGL_DRIVER_ANY) { |