Commit graph

214 commits

Author SHA1 Message Date
Timo Kreuzer
00cfa8aac2 [WIN32K] Fix an ASSERT to ignore the upper 32 bits of a passed in GDI handle 2020-11-07 18:34:10 +01:00
Victor Perevertkin
5c7ce4475e
[REACTOS] Cleanup INIT and some PAGE section allocations
- Change INIT_FUNCTION and INIT_SECTION to CODE_SEG("INIT") and DATA_SEG("INIT") respectively
- Remove INIT_FUNCTION from function prototypes
- Remove alloc_text pragma calls as they are not needed anymore
2020-11-02 21:45:31 +03:00
Timo Kreuzer
cef57d3c44 [GDI32] Fix up GdiFixUpHandle 2020-10-31 14:24:09 +01:00
Mark Jansen
7ed0f25b64 [GDI32] Prevent double initialization in GdiProcessSetup
Found with Application Verifier :)
2020-10-11 16:30:39 +02:00
James Tabor
8313483202 [GDI32] Force Return if other Type of Device Requested
Fix CORE-17241 assert.
2020-09-08 12:52:28 -05:00
Doug Lyons
7624a98706
[GDI32] Fix double cx's in call to HANDLE_METADC in win32ss painting.c (#3137)
Fix copy-paste error.
2020-09-06 18:08:03 +02:00
Joachim Henze
9835710f7e [GDI] Demote the insane amount of logging CORE-1091
that was introduced by
0.4.15-dev-684-g
448bcede24
2020-09-01 19:11:22 +02:00
Doug Lyons
448bcede24
[GDI32] Preserve PitchAndFamily across GetTextMetricsW call (#2689)
ReactOS has no Raster fonts today, so compensate for this affecting the editbox margins.
CORE-1091
This patch fixes the inability to see all of the characters in the CD-KEY box of Starcraft and Visual Basic 5 and Visual Basic 6 Installs. It supersedes #2656
2020-09-01 20:08:26 +09:00
Nguyen Trung Khanh
247c189263
[NTGDI] Fix stack memory disclosure in ftGdiGetTextMetricsW (#2991) 2020-08-25 19:28:39 +03:00
Nguyen Trung Khanh
a081e12fbd
[NTGDI] Fix pool memory disclosure in NtGdiGetGlyphOutline (#3021) 2020-08-25 19:14:23 +03:00
Nguyen Trung Khanh
50510538db
[WIN32SS][GDI] Fix pool memory disclosure in NtGdiGetOutlineTextMetricsInternalW (#2964) 2020-07-04 15:39:16 +02:00
Serge Gautherie
5f076e5558
[GDI32] MirrorRgnByWidth(): Fix 'phrgn' parameter handling
Detected by Cppcheck: uselessAssignmentPtrArg.
Addendum to 794e7aa (r31523) and e647530 (r65893).
2020-06-18 10:33:35 +02:00
James Tabor
cba5acbc48 [NtGDI] Add missing type for EPS Print Escape
Part of GDI escape printing.
2020-05-12 20:34:22 -05:00
Mark Jansen
a98bebb0b0
[WIN32K] Mute a DPRINT 2020-04-27 12:54:11 +02:00
Katayama Hirofumi MZ
52fb8c1a8d
[NTGDI][FREETYPE] Return non-zero gm.gmBlackBoxX/Y (#2643)
In return of GetGlyphOutline function call, gm.gmBlackBoxX and gm.gmBlackBoxY must be non-zero to avoid Division by Zero. At epilogue of ftGdiGetGlyphOutline, we adjust the values. CORE-15949
2020-04-23 22:02:41 +09:00
Tibor Lajos Füzi
6020af2014
[GDI32] Allow BI_BITFIELDS compression in CreateDIBitmap (#2448)
CORE-16750, CORE-15960
2020-03-30 12:11:38 +02:00
Hervé Poussineau
ae5d2dbb9e [WIN32K] Add some static specifiers, to prevent exporting FORCEINLINE function outside compilation unit 2020-03-26 16:39:16 +01:00
Jérôme Gardou
2928084e2f [WIN32K] Fix bounds calculation when drawing with a pen 2020-03-24 14:39:27 +01:00
Thomas Faber
72c51aabba
[NTOS:IO][GDI32][CMD] Fix some under-sized variables. CORE-14922
Fixes x64 boot with RTC.
2020-03-13 20:45:06 +01:00
Colin Finck
5d8c39753e
[GDI32] GdiConvertToDevmodeW: Import WINE commit 32393796bb534e9cf11dd988dce88722c67f7906 ("gdi32: GdiConvertToDevmodeW should not refer to unintialized name bytes.")
This makes our GdiConvertToDevmodeW equivalent to the WINE counterpart again.
2020-02-24 19:17:56 +01:00
Joachim Henze
99ba7ea95f [FREETYPE] Fix regression fonts in Adobe Photoshop CS2 menu CORE-16694
By Reverting beginnings of raster-fonts-works (*.fnt and *.fon)
Thanks Katayama Hirofumi MZ for helping with this revert.

The regression was introduced by 0.4.13-dev-681-g
ae99df1675

I will also port this revert back into 0.4.13-RC
2020-02-23 12:23:05 +01:00
jimtabor
c89e111c6a [GDI32] Use Gdi Flush for SetViewportOrgEx.
Fixes offset in combo texts and menu highlights. See CORE-16644 & CORE-16656.
2020-02-13 17:05:38 -06:00
jimtabor
2903022199 [NtGDI] Use Vis Region for New Clip Region
Interesting results while using VBOX-GA.
Rolling back to Vis, wine throwback. See CORE-16680.
2020-02-09 11:28:19 -06:00
Mark Jansen
53c9a6deaa
[WIN32K] Don't trust the BITMAPINFOHEADER size
This is not entirely correct yet, but less wrong than before
CORE-16621
2020-01-26 13:08:53 +01:00
James Tabor
4927905eeb [NtGdi] Fix clip region merging.
Use a new region while merging from the original. See CORE-16626.
2020-01-20 12:49:11 -06:00
Thomas Faber
5b83d86af5
[WIN32K:NTGDI] Add missing probe to NtGdiGetPath. 2020-01-03 11:21:24 +01:00
Thomas Faber
f0d2bd3852
[WIN32K:NTGDI] Avoid breakpoints in syscalls. 2020-01-03 11:21:21 +01:00
Katayama Hirofumi MZ
fb7ac93dd1
[WIN32SS][NTGDI][FREETYPE] Add ASSERT(pOS2); to FillTM (#2170)
I had used a static analyzer cppcheck to improve the code. This analyzer suggested NULL check for this code.
2019-12-25 18:27:44 +09:00
Katayama Hirofumi MZ
dae1f8d716 [WIN32SS][FREETYPE][NTGDI] Clarify calculation precedence for '&' and '?' 2019-12-24 13:48:33 +09:00
jimtabor
5214a38fd0 [Win32SS] Fix Opaque Text Fade while in Desktop Startup
See CORE-16498.
2019-12-09 11:18:32 -06:00
Hermès Bélusca-Maïto
0ad65796bb
[WIN32K][VIDEOPRT] Improve initialization and interfacing with INBV.
CORE-12149

VIDEOPRT:
=========

Improve interfacing with INBV, so as to detect when an external module
acquired INBV display ownership, and whether ownership is being released
later on. (This does NOT rely on hooking!)

For this purpose we improve the IntVideoPortResetDisplayParameters(Ex)
callback that gets registered with an InbvNotifyDisplayOwnershipLost()
call during initialization, and we add a monitoring thread.

The callback is called whenever an external module calls
InbvAcquireDisplayOwnership(), for example the bugcheck code or the KDBG
debugger in SCREEN mode. When this happens, a flag that tells the
monitoring thread to start monitoring INBV is set (ReactOS-specific),
and the display adapters get reset with HwResetHw() (as done on Windows).

Due to the fact that this INBV callback can be called at *ANY* IRQL, we
cannot use dispatcher synchronization mechanisms such as events to tell
the INBV monitoring thread to start its operations, so we need to rely
instead on a flag to be set. And, since INBV doesn't provide with any
proper callback/notification system either, we need to actively monitor
its state by pooling. To reduce the load on the system the monitoring
thread performs 1-second waits between each check for the flag set by
the INBV callback, and during checking the INBV ownership status.

When the INBV ownership is detected to be released by an external module,
the INBV callback is re-registered (this is *MANDATORY* since the
external module has called InbvNotifyDisplayOwnershipLost() with a
different callback parameter!), and then we callout to Win32k for
re-enabling the display.

This has the virtue of correctly resetting the display once the KDBG
debugger in SCREEN mode is being exited, and fixes CORE-12149 .

The following additional fixes were needed:

VIDEOPRT & WIN32K:
==================

Remove the registration with INBV that was previously done in a ReactOS-
specific hacked IRP_MJ_WRITE call; it is now done correctly during the
video device opening done by EngpRegisterGraphicsDevice() in the VIDEOPRT's
IRP_MJ_CREATE handler, as done on Windows.

WIN32K:
=======

- Stub the VideoPortCallout() support, for VIDEOPRT -> WIN32 callbacks.
  This function gets registered with VIDEOPRT through an
  IOCTL_VIDEO_INIT_WIN32K_CALLBACKS call in EngpRegisterGraphicsDevice().

- Only partially implement the 'VideoFindAdapterCallout' case, that just
  re-enables the primary display by refreshing it (using the new function
  UserRefreshDisplay()).

VIDEOPRT:
=========

- PVIDEO_WIN32K_CALLOUT is an NTAPI (stdcall) callback.

- In the IntVideoPortResetDisplayParameters(Ex) callback, reset all the
  "resettable" adapters registered in the HwResetAdaptersList list.
  We thus get rid of the global ResetDisplayParametersDeviceExtension.

- Make the IntVideoPortResetDisplayParameters(Ex) callback slightly more
  robust (using SEH) against potential HwResetListEntry list corruption
  or invalid DriverExtension->InitializationData.HwResetHw() that would
  otherwise trigger a BSOD, and this would be disastrous since that
  callback is precisely called when INBV is acquired, typically when the
  BSOD code initializes the display for displaying its information...

Extras:
- Validate the IrpStack->MajorFunction in IntVideoPortDispatchDeviceControl()
  and implement IRP_MJ_SHUTDOWN handling. Stub out the other IOCTLs that
  are handled by VIDEOPRT only (and not by the miniports).

- VIDEOPRT doesn't require IRP_MJ_INTERNAL_DEVICE_CONTROL (unused).

- Implement IOCTL_VIDEO_PREPARE_FOR_EARECOVERY that just resets the
  display to standard VGA 80x25 text mode.
2019-12-02 02:33:20 +01:00
Hermès Bélusca-Maïto
148e137b42
[WIN32K] Add some validity checks in PDEVOBJ_vReference() and use it instead of explicitly manipulating ppdev->cPdevRefs. 2019-11-25 00:41:51 +01:00
Hermès Bélusca-Maïto
acf689a973
[WIN32K] Use RtlString* routines. 2019-11-25 00:41:49 +01:00
Hermès Bélusca-Maïto
0ad90f83d3
[WIN32K] Code formatting. 2019-11-25 00:41:49 +01:00
Katayama Hirofumi MZ
ebfb62b420 [NTGDI][FONT] Delete FillTMEx function and simplify codes 2019-11-21 17:01:25 +09:00
Katayama Hirofumi MZ
f8821421a4
[NTGDI][FONT] Don't rely FT_FaceRec.style_name (#2064)
- Delete ItalicFromStyle and WeightFromStyle functions.
- Don't use FT_FaceRec.style_name for font style but pOS2->fsSelection, pOS2->usWeightClass, WinFNT.italic and WinFNT.weight.
- Don't use the bitmap glyph as possible if the glyph will be oblique'd.
- Tahoma Italic is working!
CORE-9614
2019-11-20 22:49:51 +09:00
Katayama Hirofumi MZ
6fc6e3c398 [WIN32SS][NTGDI] Unite duplicate of condition 'UsesSource' 2019-10-22 09:33:32 +09:00
Katayama Hirofumi MZ
1bf982ff88 [WIN32SS][NTGDI] 'otm' is always non-NULL in epilogue 2019-10-22 09:29:15 +09:00
jimtabor
333b8f19a4 [GDI32] Update Gdi Driver Header.
Patch by : Akihiro Sagawa : Implement GetCharWidthInfo().

1128587fd2
2019-10-18 23:49:13 -05:00
Katayama Hirofumi MZ
b81f9b0842
[WIN32SS][FONT] Fix registry-based management (#1879)
CORE-16269
- Fix and improve registry-based font entry management.
- Append style name to registry value name.
- Make some DPRINT DPRINT1 (noisy).
2019-09-10 20:39:52 +09:00
jimtabor
6f353f7747 [Win32SS|Eng] Update stubs.
These functions are no longer support for UMPD.
2019-09-04 13:09:34 -05:00
jimtabor
3ca67d97e2 [Win32SS] Fix safe pointer and define type. 2019-09-03 15:02:46 -05:00
jimtabor
c698eff041 [Win32SS] Implement EngCreate/DeletePalette.
Safe to be called from user side without UMPD support.
2019-09-03 14:36:20 -05:00
James Tabor
d48345a0ee Update Headers for Printing and Other
Add missing flags and function types. Fix typos.
2019-08-15 21:39:26 -05:00
Katayama Hirofumi MZ
2b526bceac
[WIN32SS][NTGDI] Registry-based font management (#1816)
CORE-16269
- Add IntGdiAddFontResourceEx function that is extended from IntGdiAddFontResource, in order to add dwFlags parameter.
- Add IntLoadFontsInRegistry function that will load the fonts from registry info.
- If loading from registry failed, IntLoadSystemFonts will be called.
- Use IntLoadFontsInRegistry rather than IntLoadSystemFonts in the OS startup.
- Add NameFromCharSet function.
- Append " (CharSetName)" to registry value name if not TrueType.
2019-08-10 14:52:09 +09:00
Doug Lyons
c1ec0d92e2
[WIN32K:NTGDI] Fix ASSERTS in REGION_bXformRgn. CORE-15992 2019-08-07 07:47:47 +02:00
Katayama Hirofumi MZ
9cd11eb103
[WIN32SS][NTGDI] Fix condition of bold emulation (#1787)
- Define EMUBOLD_NEEDED macro to determine the condition of bold emuration necessity.
- Use this macro.
- Loose the condition.
2019-08-04 15:15:52 +09:00
Mark Jansen
c057a07d79
[WIN32SS] Improve font loading failure logging 2019-08-04 01:55:18 +02:00
Mark Jansen
35dc022e14
[WIN32SS] Only access a font face if it was actually loaded 2019-08-04 00:41:12 +02:00
Katayama Hirofumi MZ
7547757892
[WIN32SS][NTGDI] Improve IntGetOutlineTextMetrics (#1760)
Improve size checking of IntGetOutlineTextMetrics function.
2019-08-02 20:28:30 +09:00