I've got a Ipaq 3630 with Pocket PC 2002.
Well the documentation come from Microsoft web site.
Using the latest version of MameCE, the upper bar with time is still visible and clicking on the lower part strongly flicker the rendering.
Also the application is not multitask friendly (the GAPI Resume and Suspend functions are never called which is no good).
I suggest to enable the new code, exactly as Microsoft said. Generally some developers want to skip some microsoft recommendation and when the hardware or operating system changes, the implementation does work anymore:
It might works on your pocket PC, but may not one newest hardware : Best example look the WhatsnewCE.txt from MameCE release 9.3:
"Implemented the Ipaq 3800 display workaround: The Ipaq 3800 has a bug(*) which causes GAPI screen access to be delayed (creating a severe display redraw penalty)"
No offense, but this hack was performed by the author because some initialisation was missing (like shfullscreen for example).
I have no IPAQ 3800 but I'm sure at 99% that if the author had followed the Microsoft specs (Shfullscreen, etc..) the mamece will runs perfectly under GAPI and would run faster ...
In my optinion, the redraw penalty is due to the fact that the taskbars and other UI stuffs was still renderered ...
If you see the Gapidraw.com, Trust me I know a lot of developers doing that under DirectX and when the hardware changes, the program flaws because they did not respect Microsoft recommendations and need to patch their programs because they did removed some initialisation thinking the code was not necessary.
Finally the 'move' of the window is necessary for the mouse input for example, else the 0,0 would be physically at 0,26.
> I don't think it's needed: here's a clip out of the first GAPI example on Microsoft (the nearest thing to docs):
> hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
> CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,
> hInstance, NULL);
> if (!hWnd)
> return FALSE;
> //When the main window is created using CW_USEDEFAULT the height of the menubar
> (if one
> // is created is not taken into account). So we resize the window after
> creating it
> // if a menubar is present
> RECT rc;
> GetWindowRect(hWnd, &rc);
> rc.bottom -= MENU_HEIGHT;
> if (hwndCB)
> MoveWindow(hWnd, rc.left, rc.top, rc.right, rc.bottom, FALSE);
> As you can see, the only magical thing which happens here is that it makes a
> window the size of the screen! Not very magical at all. The MENU_HEIGHT=26 looks
> to be a bit hacky even. I think I'd be happier with this code:
> int cx=0,cy=0;
> // Get desktop size
> I've tried this on iPaq and Jornada and it works fine - fullscreen display. No
> need for any SH* stuff.
> Tekhmaster, have you had any troubles with fullscreen?
> execom_rt - you said you had fullscreen troubles, which pocket pc model do you