glx: Add an error message when a direct renderer's createScreen() routine fails
authorJon TURNEY <jon.turney@dronecode.org.uk>
Sat, 10 May 2014 10:04:44 +0000 (11:04 +0100)
committerJon TURNEY <jon.turney@dronecode.org.uk>
Wed, 18 Jun 2014 08:55:45 +0000 (09:55 +0100)
because no matching fbConfigs or visuals could be found.

Nearly all the error cases in *createScreen() issue an error message to diagnose
the failure to initialize before branching to handle_error.  The few remaining
error cases which don't should probably do the same.

(At the moment, it seems this can be triggered in drisw with an X server which
reports definite values for MAX_PBUFFFER_(WIDTH|HEIGHT|SIZE), because those
attributes are checked for an exact match against 0.)

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glx/dri2_glx.c
src/glx/dri3_glx.c
src/glx/dri_glx.c
src/glx/drisw_glx.c

index bd7ed8bbe974d93d97469b891ff2dd7f6e6f6552..462d5602a1c0729a4fe2dc5d8407470b3ca4b47a 100644 (file)
@@ -1263,8 +1263,10 @@ dri2CreateScreen(int screen, struct glx_display * priv)
    configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs);
    visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs);
 
-   if (!configs || !visuals)
+   if (!configs || !visuals) {
+       ErrorMessageF("No matching fbConfigs or visuals found\n");
        goto handle_error;
+   }
 
    glx_config_destroy_list(psc->base.configs);
    psc->base.configs = configs;
index 3d8a6627b1dab194fd5893a0d48bde97f2ca37c8..55eed391a794ba92325f6d5946288be3628da35d 100644 (file)
@@ -1741,8 +1741,10 @@ dri3_create_screen(int screen, struct glx_display * priv)
    configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs);
    visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs);
 
-   if (!configs || !visuals)
+   if (!configs || !visuals) {
+       ErrorMessageF("No matching fbConfigs or visuals found\n");
        goto handle_error;
+   }
 
    glx_config_destroy_list(psc->base.configs);
    psc->base.configs = configs;
index 04a0847a4b61f938c7388b9fd8f75b120b9de33b..5295331769aa876f23c6361ee05b761005c4d4a6 100644 (file)
@@ -460,8 +460,10 @@ CallCreateNewScreen(Display *dpy, int scrn, struct dri_screen *psc,
    configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs);
    visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs);
 
-   if (!configs || !visuals)
+   if (!configs || !visuals) {
+       ErrorMessageF("No matching fbConfigs or visuals found\n");
        goto handle_error;
+   }
 
    glx_config_destroy_list(psc->base.configs);
    psc->base.configs = configs;
index 5885b6635c48184199363796c10e503857acce59..fcb5d8f578934cfb94e75f1f9af23b14fa874346 100644 (file)
@@ -733,8 +733,10 @@ driswCreateScreen(int screen, struct glx_display *priv)
    configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs);
    visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs);
 
-   if (!configs || !visuals)
+   if (!configs || !visuals) {
+       ErrorMessageF("No matching fbConfigs or visuals found\n");
        goto handle_error;
+   }
 
    glx_config_destroy_list(psc->base.configs);
    psc->base.configs = configs;