X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkUnixPkg%2FSec%2FUgaX11.c;h=47fb4fab7ac36e365232805302cf342c62ff55bc;hp=565689a72785dd44c56c9612618f0c8f9d5cd20e;hb=9db9711c414fe3207ffae81b3c1627554c428308;hpb=c9093a06e72ef16d2f3bd7ce0a2b9a172e9d048c diff --git a/EdkUnixPkg/Sec/UgaX11.c b/EdkUnixPkg/Sec/UgaX11.c index 565689a727..47fb4fab7a 100644 --- a/EdkUnixPkg/Sec/UgaX11.c +++ b/EdkUnixPkg/Sec/UgaX11.c @@ -13,6 +13,8 @@ #include #include +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;