pair RaiseTPL with RestoreTPL
[mirror_edk2.git] / EdkUnixPkg / Sec / UgaX11.c
index 565689a72785dd44c56c9612618f0c8f9d5cd20e..47fb4fab7ac36e365232805302cf342c62ff55bc 100644 (file)
@@ -13,6 +13,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+extern void msSleep (unsigned long Milliseconds);
+
 /* XQueryPointer  */
 
 struct uga_drv_shift_mask
@@ -113,8 +115,8 @@ TryCreateShmImage(UGA_IO_PRIVATE *drv)
   /* Can this fail ?  */
   shmctl (drv->xshm_info.shmid, IPC_RMID, NULL);
 
-  drv->xshm_info.shmaddr = drv->image_data;
-  drv->image->data = drv->image_data;
+  drv->xshm_info.shmaddr = (char*)drv->image_data;
+  drv->image->data = (char*)drv->image_data;
          
   if (!XShmAttach (drv->display, &drv->xshm_info))
     {
@@ -189,7 +191,7 @@ UgaSize(EFI_UNIX_UGA_IO_PROTOCOL *UgaIo, UINT32 Width, UINT32 Height)
       
       drv->image_data = malloc((drv->width * drv->height) << drv->pixel_shift);
       drv->image = XCreateImage (drv->display, drv->visual, drv->depth,
-                                ZPixmap, 0, drv->image_data,
+                                ZPixmap, 0, (char *)drv->image_data,
                                 drv->width, drv->height,
                                 8 << drv->pixel_shift, 0);
     }
@@ -328,6 +330,7 @@ UgaColorToPixel (UGA_IO_PRIVATE *drv, unsigned long val)
 {
   EFI_UGA_PIXEL res;
 
+  memset (&res, 0, sizeof (EFI_UGA_PIXEL));
   /* FIXME: should round instead of truncate.  */
   res.Red = (val >> drv->r.shift) << drv->r.csize;
   res.Green = (val >> drv->g.shift) << drv->g.csize;
@@ -346,7 +349,7 @@ UgaCheckKey(EFI_UNIX_UGA_IO_PROTOCOL *UgaIo)
     return EFI_SUCCESS;
   else {
     /* EFI is certainly polling.  Be CPU-friendly.  */
-    usleep (50000);
+    msSleep (20);
     return EFI_NOT_READY;
   }
 }
@@ -527,7 +530,7 @@ UgaCreate (EFI_UNIX_UGA_IO_PROTOCOL **Uga, CONST CHAR16 *Title)
   int title_len;
 
   drv = (UGA_IO_PRIVATE *)
-    malloc (sizeof (UGA_IO_PRIVATE));
+    calloc (1, sizeof (UGA_IO_PRIVATE));
   if (drv == NULL)
     return EFI_OUT_OF_RESOURCES;