Bug 916

Summary: NEWT Fullscreen Mode on Windows ALT-TAB doesn't allow Application Switching
Product: [JogAmp] Newt Reporter: Sven Gothel <sgothel>
Component: windowsAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: major    
Priority: ---    
Version: 1   
Hardware: pc_all   
OS: windows   
Type: --- SCM Refs:
354b0b370bbfd14743267a9466f5e91e4d218a42
Workaround: ---
Bug Depends on: 570, 914    
Bug Blocks:    

Description Sven Gothel 2013-12-02 05:57:09 CET
<http://forum.jogamp.org/Regression-of-alwaysOnTopBug-tp4030735p4030746.html>

ALT-TAB application switch while NEWT window is in fullscreen mode works fine on:
  - GNU/Linux w/ X11
  - Mac OSX
  - Windows 7:
    - NVIDIA GPU/Driver
    - AMD GPU/Driver

But does not work on a laptop running Windows 7
using an Intel HD 4000 w/ Intel GPU driver version
  8.15.10.2618

This machine was last updated 2013-08-30
and I currently run a Windows update on said machine ..

Quotes below:

>> Strange, I just tried it on my other Windows 7 machine and it works fine...
>> That PC has an Radeon HD 5870.
>
> I tested w/ NVidia Windows7, so both NV and AMD are fine.
>
>> The PC i'm having the problem with is my laptop
>> with an Intel HD Graphics 3000. Maybe some weird driver problem, or just some
>> windows bug?
>
Comment 1 Sven Gothel 2013-12-02 07:01:28 CET
(In reply to comment #0)
> 
> But does not work on a laptop running Windows 7
> using an Intel HD 4000 w/ Intel GPU driver version
>   8.15.10.2618
> 
> This machine was last updated 2013-08-30
> and I currently run a Windows update on said machine ..

I have updated the machine (Windows update)
and the Intel GPU driver stays the same.
The issue still remains.

However, I enabled the NV GPU and re-run the Gears Applet
and voila .. ALT-TAB worked in fullscreen mode.

Hence this is an issue w/ the Intel GPU.

Further analysis hints that maybe:
  ChangeDisplaySettings(&dm, CDS_FULLSCREEN)

is the issue w/ Intel GPU .. since this API is reported 
to cause problems:
  <http://stackoverflow.com/questions/3549148/fullscreen-management-with-winapi>
  <http://www.indiegamer.com/archives/t-796.html>

We could find a remedy using GDI API (stackoverflow)
or even go the DDraw route. 
More analysis might be required here.
Comment 2 Sven Gothel 2013-12-02 19:55:19 CET
(In reply to comment #1)
> Further analysis hints that maybe:
>   ChangeDisplaySettings(&dm, CDS_FULLSCREEN)
> 
> is the issue w/ Intel GPU .. since this API is reported 
> to cause problems:
>  
> <http://stackoverflow.com/questions/3549148/fullscreen-management-with-
> winapi>
>   <http://www.indiegamer.com/archives/t-796.html>
> 
> We could find a remedy using GDI API (stackoverflow)
> or even go the DDraw route. 
> More analysis might be required here.

Seems like we shall react on WM_ACTIVATE when in fullscreen mode:
  <http://www.gamedev.net/topic/588559-opengl--alt-tab/>

i.e. revoke CDS_FULLSCREEN when becoming inactive and activate it
when becoming active again. WM_ACTIVATE is sent in fullscreen mode
when ALT-TAB switching.
Comment 3 Sven Gothel 2013-12-03 04:09:22 CET
Remedy for 'some' display drivers, i.e. Intel HD:

- Explicitly push fullscreen window to BOTTOM when inactive (ALT-TAB)
Comment 4 Sven Gothel 2013-12-04 03:32:11 CET
(In reply to comment #0)
> 
> But does not work on a laptop running Windows 7
> using an Intel HD 4000 w/ Intel GPU driver version
>   8.15.10.2618

New Intel HD 4000 driver 10.18.10.3345
works w/o the remedy.

However, applied remedy doesn't hurt and
enables ALT-TAB for older drivers, incl. HD 3000.