mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +00:00
some more video code
svn path=/trunk/; revision=840
This commit is contained in:
parent
258912bf48
commit
f09720f7d7
|
@ -189,12 +189,36 @@ typedef VOID (*PBANKED_SECTION_ROUTINE)(IN ULONG ReadBank, IN ULONG WriteBank,
|
||||||
|
|
||||||
/* FIXME: replace with proper typedefs */
|
/* FIXME: replace with proper typedefs */
|
||||||
typedef PVOID PVIDEO_CLUT;
|
typedef PVOID PVIDEO_CLUT;
|
||||||
typedef PVOID PVIDEO_MEMORY;
|
|
||||||
typedef PVOID PVIDEO_MEMORY_INFORMATION;
|
typedef struct _VIDEO_MEMORY
|
||||||
typedef PVOID PVIDEO_MODE;
|
{
|
||||||
|
PVOID RequestedVirtualAddress;
|
||||||
|
} VIDEO_MEMORY, *PVIDEO_MEMORY;
|
||||||
|
|
||||||
|
typedef struct _VIDEO_MEMORY_INFORMATION
|
||||||
|
{
|
||||||
|
PVOID VideoRamBase;
|
||||||
|
ULONG VideoRamLength;
|
||||||
|
PVOID FrameBufferBase;
|
||||||
|
ULONG FrameBufferLength;
|
||||||
|
} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _VIDEO_MODE
|
||||||
|
{
|
||||||
|
ULONG RequestedMode;
|
||||||
|
} VIDEO_MODE, *PVIDEO_MODE;
|
||||||
|
|
||||||
|
/* FIXME: replace with proper typedefs */
|
||||||
typedef PVOID PVIDEO_MODE_INFORMATION;
|
typedef PVOID PVIDEO_MODE_INFORMATION;
|
||||||
typedef PVOID PVIDEO_NUM_MODES;
|
typedef PVOID PVIDEO_NUM_MODES;
|
||||||
typedef PVOID PVIDEO_SHARE_MEMORY;
|
|
||||||
|
typedef struct _VIDEO_SHARE_MEMORY
|
||||||
|
{
|
||||||
|
HANDLE ProcessHandle;
|
||||||
|
ULONG ViewOffset;
|
||||||
|
ULONG ViewSize;
|
||||||
|
PVOID RequestedVirtualAddress;
|
||||||
|
} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
|
||||||
|
|
||||||
ULONG STDCALL VideoPortCompareMemory(IN PVOID Source1, IN PVOID Source2, IN ULONG Length);
|
ULONG STDCALL VideoPortCompareMemory(IN PVOID Source1, IN PVOID Source2, IN ULONG Length);
|
||||||
VOID STDCALL VideoPortDebugPrint(IN ULONG DebugPrintLevel, IN PCHAR DebugMessage, ...);
|
VOID STDCALL VideoPortDebugPrint(IN ULONG DebugPrintLevel, IN PCHAR DebugMessage, ...);
|
||||||
|
|
|
@ -159,6 +159,8 @@ HANDLE DRIVER_FindMPDriver(LPCWSTR Name);
|
||||||
BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
||||||
PDRIVER_FUNCTIONS DF);
|
PDRIVER_FUNCTIONS DF);
|
||||||
BOOL DRIVER_UnregisterDriver(LPCWSTR Name);
|
BOOL DRIVER_UnregisterDriver(LPCWSTR Name);
|
||||||
|
INT DRIVER_ReferenceDriver (LPCWSTR Name);
|
||||||
|
INT DRIVER_UnreferenceDriver (LPCWSTR Name);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: registry.c,v 1.21 1999/11/24 11:51:46 dwelch Exp $
|
/* $Id: registry.c,v 1.22 1999/12/09 02:45:05 rex Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -1374,7 +1374,6 @@ CmiObjectParse(PVOID ParsedObject, PWSTR *Path)
|
||||||
return NewKeyObject;
|
return NewKeyObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: this access of RootKeyBlock should be guarded by spinlock */
|
|
||||||
CurKeyBlock = CmiGetKeyBlock(RegistryFile,
|
CurKeyBlock = CmiGetKeyBlock(RegistryFile,
|
||||||
RegistryFile->HeaderBlock->RootKeyBlock);
|
RegistryFile->HeaderBlock->RootKeyBlock);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: driver.c,v 1.5 1999/11/20 21:51:19 ekohl Exp $
|
/* $Id: driver.c,v 1.6 1999/12/09 02:45:05 rex Exp $
|
||||||
*
|
*
|
||||||
* GDI Driver support routines
|
* GDI Driver support routines
|
||||||
* (mostly swiped from Wine)
|
* (mostly swiped from Wine)
|
||||||
|
@ -18,6 +18,7 @@ typedef struct _GRAPHICS_DRIVER
|
||||||
{
|
{
|
||||||
PWSTR Name;
|
PWSTR Name;
|
||||||
PGD_ENABLEDRIVER EnableDriver;
|
PGD_ENABLEDRIVER EnableDriver;
|
||||||
|
int ReferenceCount;
|
||||||
struct _GRAPHICS_DRIVER *Next;
|
struct _GRAPHICS_DRIVER *Next;
|
||||||
} GRAPHICS_DRIVER, *PGRAPHICS_DRIVER;
|
} GRAPHICS_DRIVER, *PGRAPHICS_DRIVER;
|
||||||
|
|
||||||
|
@ -31,6 +32,7 @@ BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
Driver->ReferenceCount = 0;
|
||||||
Driver->EnableDriver = EnableDriver;
|
Driver->EnableDriver = EnableDriver;
|
||||||
if (Name)
|
if (Name)
|
||||||
{
|
{
|
||||||
|
@ -174,3 +176,35 @@ BOOL DRIVER_UnregisterDriver(LPCWSTR Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INT DRIVER_ReferenceDriver (LPCWSTR Name)
|
||||||
|
{
|
||||||
|
GRAPHICS_DRIVER *Driver = DriverList;
|
||||||
|
|
||||||
|
while (Driver && Name)
|
||||||
|
{
|
||||||
|
if (!_wcsicmp( Driver->Name, Name))
|
||||||
|
{
|
||||||
|
return ++Driver->ReferenceCount;
|
||||||
|
}
|
||||||
|
Driver = Driver->Next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GenericDriver ? ++GenericDriver->ReferenceCount : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT DRIVER_UnreferenceDriver (LPCWSTR Name)
|
||||||
|
{
|
||||||
|
GRAPHICS_DRIVER *Driver = DriverList;
|
||||||
|
|
||||||
|
while (Driver && Name)
|
||||||
|
{
|
||||||
|
if (!_wcsicmp( Driver->Name, Name))
|
||||||
|
{
|
||||||
|
return --Driver->ReferenceCount;
|
||||||
|
}
|
||||||
|
Driver = Driver->Next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GenericDriver ? --GenericDriver->ReferenceCount : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: dc.c,v 1.9 1999/11/17 20:54:05 rex Exp $
|
/* $Id: dc.c,v 1.10 1999/12/09 02:45:06 rex Exp $
|
||||||
*
|
*
|
||||||
* DC.C - Device context functions
|
* DC.C - Device context functions
|
||||||
*
|
*
|
||||||
|
@ -105,6 +105,7 @@ HDC STDCALL W32kCreateCompatableDC(HDC hDC)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
DRIVER_ReferenceDriver (NewDC->DriverName);
|
||||||
|
|
||||||
/* Copy information from original DC to new DC */
|
/* Copy information from original DC to new DC */
|
||||||
NewDC->hSelf = NewDC;
|
NewDC->hSelf = NewDC;
|
||||||
|
@ -243,6 +244,8 @@ HDC STDCALL W32kCreateDC(LPCWSTR Driver,
|
||||||
/* Complete initialization of the physical device */
|
/* Complete initialization of the physical device */
|
||||||
NewDC->DriverFunctions.CompletePDev(NewDC->PDev, NewDC);
|
NewDC->DriverFunctions.CompletePDev(NewDC->PDev, NewDC);
|
||||||
|
|
||||||
|
DRIVER_ReferenceDriver (Driver);
|
||||||
|
|
||||||
/* Enable the drawing surface */
|
/* Enable the drawing surface */
|
||||||
NewDC->Surface = NewDC->DriverFunctions.EnableSurface(NewDC->PDev);
|
NewDC->Surface = NewDC->DriverFunctions.EnableSurface(NewDC->PDev);
|
||||||
|
|
||||||
|
@ -277,8 +280,11 @@ BOOL STDCALL W32kDeleteDC(HDC DCHandle)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!DRIVER_UnreferenceDriver (DCToDelete->DriverName))
|
||||||
|
{
|
||||||
DCToDelete->DriverFunctions.DisableSurface(DCToDelete->PDev);
|
DCToDelete->DriverFunctions.DisableSurface(DCToDelete->PDev);
|
||||||
DCToDelete->DriverFunctions.DisablePDev(DCToDelete->PDev);
|
DCToDelete->DriverFunctions.DisablePDev(DCToDelete->PDev);
|
||||||
|
}
|
||||||
|
|
||||||
/* First delete all saved DCs */
|
/* First delete all saved DCs */
|
||||||
while (DCToDelete->saveLevel)
|
while (DCToDelete->saveLevel)
|
||||||
|
|
Loading…
Reference in a new issue