Author: greatlrd Date: Wed Dec 8 17:50:17 2010 New Revision: 49988
URL: http://svn.reactos.org/svn/reactos?rev=49988&view=rev Log: Do not try map video memory for no linear video mode. Fix error processing for VBEMapVideoMemory and VBEUnmapVideoMemory
Modified: branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c
Modified: branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/video/min... ============================================================================== --- branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c [iso-8859-1] (original) +++ branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c [iso-8859-1] Wed Dec 8 17:50:17 2010 @@ -532,7 +532,14 @@ }
if (Result) + { RequestPacket->StatusBlock->Status = NO_ERROR; + } + else + { + RequestPacket->StatusBlock->Information = 0; + StatusBlock->Status = ERROR_INVALID_FUNCTION; + }
return TRUE; } @@ -755,6 +762,7 @@ { PHYSICAL_ADDRESS FrameBuffer; ULONG inIoSpace = VIDEO_MEMORY_SPACE_MEMORY; + BOOLEAN retvalue;
StatusBlock->Information = sizeof(VIDEO_MEMORY_INFORMATION);
@@ -776,24 +784,31 @@ DeviceExtension->ModeInfo[DeviceExtension->CurrentMode].LinBytesPerScanLine * DeviceExtension->ModeInfo[DeviceExtension->CurrentMode].YResolution; } - } -#ifdef VBE12_SUPPORT + + StatusBlock->Status = VideoPortMapMemory(DeviceExtension, + FrameBuffer, + &MapInformation->VideoRamLength, + &inIoSpace, + &MapInformation->VideoRamBase); + if (StatusBlock->Status == NO_ERROR) + { + /* The frame buffer and virtual memory and equivalent in this case.*/ + MapInformation->FrameBufferBase = MapInformation->VideoRamBase; + MapInformation->FrameBufferLength = MapInformation->VideoRamLength; + retvalue = TRUE; + } + else + { + retvalue = FALSE; + } + } else { - FrameBuffer.QuadPart = 0xA0000; - MapInformation->VideoRamBase = RequestedAddress->RequestedVirtualAddress; - MapInformation->VideoRamLength = 0x10000; - } -#endif - - VideoPortMapMemory(DeviceExtension, FrameBuffer, - &MapInformation->VideoRamLength, &inIoSpace, - &MapInformation->VideoRamBase); - - MapInformation->FrameBufferBase = MapInformation->VideoRamBase; - MapInformation->FrameBufferLength = MapInformation->VideoRamLength; - - return TRUE; + /* we can not map no linear video mode for VBE 2.0 and higher */ + retvalue = FALSE; + } + + return retvalue; }
/* @@ -809,9 +824,20 @@ PVIDEO_MEMORY VideoMemory, PSTATUS_BLOCK StatusBlock) { - VideoPortUnmapMemory(DeviceExtension, VideoMemory->RequestedVirtualAddress, + BOOLEAN retvalue; + StatusBlock->Status VideoPortUnmapMemory(DeviceExtension, VideoMemory->RequestedVirtualAddress, NULL); - return TRUE; + + if (StatusBlock->Status == NO_ERROR) + { + retvalue = TRUE; + } + else + { + retvalue = FALSE; + } + + return retvalue; }
/*