src/video/riscos/SDL_wimpvideo.c
changeset 634 44d574ed4780
parent 630 550bccdf04bd
child 769 b8d311d90021
--- a/src/video/riscos/SDL_wimpvideo.c	Tue Jun 03 19:35:10 2003 +0000
+++ b/src/video/riscos/SDL_wimpvideo.c	Sat Jun 14 07:18:40 2003 +0000
@@ -80,6 +80,9 @@
 extern int mouseInWindow;
 extern int riscos_closeaction;
 
+/* Following needed to ensure window is shown immediately */
+extern int hasFocus;
+extern void WIMP_Poll(_THIS, int waitTime);
 
 SDL_Surface *WIMP_SetVideoMode(_THIS, SDL_Surface *current,
 				int width, int height, int bpp, Uint32 flags)
@@ -177,9 +180,21 @@
 	/* Reset device functions for the wimp */
 	WIMP_SetDeviceMode(this);
 
-    /* Needs to set up plot info after window has been created */
-    /* Not sure why, but plots don't work if I do it earlier */
-    WIMP_SetupPlotInfo(this);
+	/* Needs to set up plot info after window has been created */
+	/* Not sure why, but plots don't work if I do it earlier */
+	WIMP_SetupPlotInfo(this);
+
+	/* Poll until window is shown */
+	{
+	   /* We wait until it gets the focus, but give up after 5 seconds
+	      in case the focus is prevented in any way.
+	   */
+	   Uint32 now = SDL_GetTicks();
+	   while (!hasFocus && SDL_GetTicks() - now < 5000)
+	   {
+	      WIMP_Poll(this, 0);
+	   }
+	}
 
 	/* We're done */
 	return(current);