This too.. please comment, test and if deemed alright add to
source. Thanks!
---------- Forwarded message ----------
From: Stephan Diestelhorst <[email protected]>
Date: Sun, Oct 9, 2011 at 8:28 PM
Subject: Re: [Libva] FGLRX detection code overly restrictive
To: Gwenole Beauchesne <[email protected]>
On Sun, Oct 9, 2011 at 11:36 AM, Stephan Diestelhorst
<[email protected]> wrote:
> How does one detect whether this is a multi-monitor setup? According
> to the X documentation :0 is equal to :0.0, since the first screen is chosen
> by default. I'll try to incorporate that into a patch.
>
>> The proper fixes would be:
>> 1. Don't return success if no valid match was found.
>> 2. Account for ":0" cases in a single monitor system.
>
> Will hack sth together!
This has got more ugly than anticipated, but works for me..
Stephan
diff --git a/va/x11/va_fglrx.c b/va/x11/va_fglrx.c
index 5be0256..7576c46 100644
--- a/va/x11/va_fglrx.c
+++ b/va/x11/va_fglrx.c
@@ -92,7 +92,33 @@ static int match_display(Display *x11_dpy, const char *display_name)
x11_dpy_name = XDisplayString(x11_dpy);
if (x11_dpy_name && test_dpy_name)
+ {
m = strcmp(x11_dpy_name, test_dpy_name) == 0;
+ if (!m)
+ {
+ // Check whether this is <display> vs <display>.0
+ int l1, l2;
+ l1 = strlen(x11_dpy_name);
+ l2 = strlen(test_dpy_name);
+ int l_short, l_long;
+ const char *name_short, *name_long;
+ if (l1 < l2)
+ {
+ l_short = l1; l_long = l2;
+ name_short = x11_dpy_name; name_long = test_dpy_name;
+ }
+ else
+ {
+ l_long = l1; l_short = l2;
+ name_long = x11_dpy_name; name_short = test_dpy_name;
+ }
+ // Check for equal prefix
+ if (!strncmp(name_short, name_long, l_short))
+ {
+ m = strcmp(name_long + (l_long - 2), ".0") == 0;
+ }
+ }
+ }
else
m = !x11_dpy_name && !test_dpy_name;
@@ -211,7 +237,7 @@ Bool VA_FGLRXGetClientDriverName( Display *dpy, int screen,
}
}
- success = True;
+ success = (*clientDriverName != NULL);
end:
if (lpXScreenInfo)
ADL_Main_Memory_Free(&lpXScreenInfo);
_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva