[OpenJDK 2D-Dev] [PATCH] 6636469: Java Fullscreen Exclusive Mode not working with Xorg server 1.3.0 and above

Dmitri Trembovetski Dmitri.Trembovetski at Sun.COM
Thu Feb 28 19:53:13 UTC 2008


   OK, I have verified that my modified fix works correctly
   in the following configurations:
    Ubuntu Hardy Herron a5
     two separate screen, no xinerama extension => we detect no xinerama (and full-screen mode supported)
     two screens + xinerama active => we detect xinerama (fs mode unsupported)
     single screen + xinerama ext. => we don't xinerama (fs mode supported)

   The only configuration left to test is two separate screens
   with xinerama extension present - but not "used"
   so you can't drag windows from one screen to another.
   I believe this is when we had issues.

   I can't enable such configuration on my nvidia-accelerated
   server for some reason. I'll install solaris nevada x86 and
   see if that would work.

   Thanks,
     Dmitri


Dmitri Trembovetski wrote:
> 
> 
> Dmitri Trembovetski wrote:
>>
>>   Hi Dan,
>>
>>   I have been preparing the fix for the integration into
>>   openjdk6.
>>
>>   If you could put it into IcedTea that'd be beneficial
>>   as well in case someone runs into a problem.
>>
>>   BTW, have you thought by any chance about the other part
>>   of the problem - proper xinerama detection? On the newer X
>>   servers we detect the xinerama extension (since it's always
>>   present and active), and assume that the screens are under
>>   xinerama. That leads to some nasty issues. I'm still not
>>   quite sure how to do the detection properly.
> 
>   My current version of the detection fix adds this check:
>              xinInfo = (*XineramaQueryScreens)(awt_display, &locNumScr);
> -            if (xinInfo != NULL) {
> +            if (xinInfo != NULL && locNumScr > 
> XScreenCount(awt_display)) {
> 
> @@ -699,11 +710,12 @@
>              (XineramaGetCenterHintFunc*)dlsym(libHandle, 
> XineramaGetCenterHintName);
> 
>          if (XineramaSolarisFunc != NULL) {
>              DTRACE_PRINTLN("calling XineramaGetInfo func on Solaris");
>              if ((*XineramaSolarisFunc)(awt_display, 0, &fbrects[0],
> -                                       &fbhints[0], &locNumScr) != 0)
> +                                       &fbhints[0], &locNumScr) != 0 &&
> +                locNumScr > XScreenCount(awt_display))
>              {
>                  DTRACE_PRINTLN("Enabling Xinerama support");
>                  usingXinerama = True;
>                  /* set global number of screens */
>                  DTRACE_PRINTLN1(" num screens = %i\n", locNumScr);
> 
>   The idea is that if xinerama is used XCountScreens should return 1,
>   at the same time, if there's only one screen then we don't need
>   to enable xinerama support either.
> 
>   But I'm still lacking proper environment to test this =(
> 
>   Thanks,
>     Dmitri
> 
>>
>>   Thanks,
>>     Dmitri
>>
>> Dan Munckton wrote:
>>> Hi Dmitri
>>>
>>> On Fri, 2008-02-15 at 15:34 -0800, Dmitri Trembovetski wrote:
>>>>    The good news is that we can probably integrate this fix into
>>>>    the newly created 6open workspace so that the fix gets into
>>>>    the major linux distros quickly.
>>>
>>> Happily, I've been unable to recreate the weird mouse issue I noted on
>>> any installation other than using a LiveCD build of Ubuntu. I'd really
>>> like to get the patch into test builds to see what other people's
>>> experience is with FSEM + Xorg 1.3, as I have limited hardware and OSes
>>> here.
>>>
>>> Is it worth trying to get the patch into the IcedTea versions first?
>>>
>>> Is there anything else I can do to progress this for now?
>>>
>>> Cheers
>>>
>>> Dan
>>>



More information about the 2d-dev mailing list