mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 21:52:59 +00:00
Sync with trunk r58151 to bring the latest changes from Amine and Timo.
svn path=/branches/ros-csrss/; revision=58152
This commit is contained in:
commit
122303c4ea
180 changed files with 5471 additions and 1510 deletions
|
@ -179,7 +179,8 @@ list(APPEND SOURCE
|
|||
gdi/ntgdi/xformobj.c
|
||||
gdi/eng/stubs.c
|
||||
gdi/eng/umpdstubs.c
|
||||
win32k.rc)
|
||||
win32k.rc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/win32k.def)
|
||||
|
||||
if(USE_DIBLIB)
|
||||
add_definitions(-D_USE_DIBLIB_)
|
||||
|
@ -200,7 +201,7 @@ else()
|
|||
endif()
|
||||
|
||||
if(ARCH STREQUAL "i386")
|
||||
list(APPEND SOURCE
|
||||
list(APPEND ASM_SOURCE
|
||||
gdi/dib/i386/dib24bpp_hline.s
|
||||
gdi/dib/i386/dib32bpp_hline.s
|
||||
gdi/dib/i386/dib32bpp_colorfill.s
|
||||
|
@ -216,9 +217,8 @@ if(KDBG)
|
|||
gdi/ntgdi/gdikdbgext.c)
|
||||
endif()
|
||||
|
||||
add_library(win32k SHARED
|
||||
${CMAKE_CURRENT_BINARY_DIR}/win32k.def
|
||||
${SOURCE})
|
||||
add_asm_files(win32k_asm ${ASM_SOURCE})
|
||||
add_library(win32k SHARED ${SOURCE} ${win32k_asm})
|
||||
|
||||
set_module_type(win32k kernelmodedriver)
|
||||
|
||||
|
@ -235,5 +235,7 @@ add_importlibs(win32k ntoskrnl hal ftfd)
|
|||
add_pch(win32k pch.h)
|
||||
add_cd_file(TARGET win32k DESTINATION reactos/system32 FOR all)
|
||||
|
||||
add_library(win32ksys sys-stubs.S)
|
||||
set_source_files_properties(sys-stubs.S PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/w32ksvc.h)
|
||||
add_asm_files(win32ksys_asm sys-stubs.S)
|
||||
add_library(win32ksys ${win32ksys_asm})
|
||||
set_target_properties(win32ksys PROPERTIES LINKER_LANGUAGE "C")
|
||||
|
|
|
@ -1071,6 +1071,14 @@ NtGdiStretchDIBitsInternal(
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Check for info / mem DC without surface */
|
||||
if (!pdc->dclevel.pSurface)
|
||||
{
|
||||
DC_UnlockDc(pdc);
|
||||
// CHECKME
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Transform dest size */
|
||||
sizel.cx = cxDst;
|
||||
sizel.cy = cyDst;
|
||||
|
@ -1099,22 +1107,30 @@ NtGdiStretchDIBitsInternal(
|
|||
hcmXform);
|
||||
}
|
||||
|
||||
pvBits = ExAllocatePoolWithTag(PagedPool, cjMaxBits, 'pmeT');
|
||||
if (!pvBits)
|
||||
if (pjInit && (cjMaxBits > 0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
pvBits = ExAllocatePoolWithTag(PagedPool, cjMaxBits, 'pmeT');
|
||||
if (!pvBits)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
_SEH2_TRY
|
||||
{
|
||||
ProbeForRead(pjInit, cjMaxBits, 1);
|
||||
RtlCopyMemory(pvBits, pjInit, cjMaxBits);
|
||||
_SEH2_TRY
|
||||
{
|
||||
ProbeForRead(pjInit, cjMaxBits, 1);
|
||||
RtlCopyMemory(pvBits, pjInit, cjMaxBits);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ExFreePoolWithTag(pvBits, 'pmeT');
|
||||
_SEH2_YIELD(return 0);
|
||||
}
|
||||
_SEH2_END
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
else
|
||||
{
|
||||
_SEH2_YIELD(return 0);
|
||||
pvBits = NULL;
|
||||
}
|
||||
_SEH2_END
|
||||
|
||||
/* FIXME: Locking twice is cheesy, coord tranlation in UM will fix it */
|
||||
if (!(pdc = DC_LockDc(hdc)))
|
||||
|
@ -1171,13 +1187,6 @@ NtGdiStretchDIBitsInternal(
|
|||
DC_vPrepareDCsForBlit(pdc, rcDst, NULL, rcSrc);
|
||||
|
||||
psurfDst = pdc->dclevel.pSurface;
|
||||
if (!psurfDst)
|
||||
{
|
||||
DC_vFinishBlit(pdc, NULL);
|
||||
// CHECKME
|
||||
bResult = TRUE;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Initialize XLATEOBJ */
|
||||
EXLATEOBJ_vInitialize(&exlo,
|
||||
|
@ -1209,7 +1218,7 @@ cleanup:
|
|||
if (psurfTmp) SURFACE_ShareUnlockSurface(psurfTmp);
|
||||
if (hbmTmp) GreDeleteObject(hbmTmp);
|
||||
if (pdc) DC_UnlockDc(pdc);
|
||||
ExFreePoolWithTag(pvBits, 'pmeT');
|
||||
if (pvBits) ExFreePoolWithTag(pvBits, 'pmeT');
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue