Fix desktop wallpaper painting behaviour for "Stretch", "Fit" and "Fill" displaying modes:
- Create a new compatible bitmap to make user-defined wallpaper fit to the screen size.
- Stretch user-defined wallpaper to this bitmap each time when wallpaper is set in Display Properties, to match the required screen coordinates. Don't do it on each desktop redrawing.
- Use the system memory DC for stretching the wallpaper image and store it there first, instead of blit it to the destination (output) DC directly.
- Use the same system memory DC for "Tile" and "Center" wallpaper modes too, to avoid unneeded allocating and freeing a new memory DC internally. Get rid from internally managed DC and use a global system memory DC to manage all wallpaper modes instead.
- Move wallpaper coordinates calculation code into a separate function, because it's now used more than one time, both when blit to system memory DC on wallpaper changing and when actually repainting desktop.
- Move wallpaper repainting code from IntPaintDesktop() into a separate function too, and call it from there.
- Pass the previously calculated input and output coordinates (left, top, width and height) for an each displaying mode appropriately: "Tile", "Center", "Stretch", "Fit" and "Fill".
- Then, simply blit a result to the output DC on each desktop repaint, to view the wallpaper contents on the desktop.
"Tile" and "Center" modes remain unaffected, since they already have no any painting issues.
CORE-13891, CORE-15820, CORE-15826
- MMC maintains one snapin tree per instance. Each console is just a view of
this tree. Therefore I moved the snapin root pointer from the console window
to the main window.
- Implement the register and unregister functions for the view and a common
UpdateViews function that call UpdateView for each registered view.
* [USER32_APITEST] Add LookupIconIdFromDirectoryEx invalid input test (#9263)
Calling it with invalid pointer crashes the caller, while on Windows
it returns 0 without error or crash.
CORE-19544, CORE-15879
* [USER32] Fix LookupIconIdFromDirectoryEx crash with invalid pointer (#9263)
This problem is similar to 60851914a8 (#5106) / CORE-15879.
Add SEH exception handler to prevent the crash, matching Windows behavior.
CORE-19544, CORE-15879
Explain that contended acquisition inserts wait blocks using the forward link only, while ExpOptimizePushLockList completes the reverse links and caches the tail pointer in the new list head.
Clarify that Waking bit serializes both waiter list maintenance and wakeup. The thread responsible for the list either clears Waking after completing the links or enters the wakeup if the lock has been released.
Rename the ExpOptimizePushLockList argument from OldValue to Initial
Value to reflect that it's the lock avlue installed by the caller when
setting Waking.
Document and assert the required Locked,Waiting, and Waking state, and
clarify that the routine either completes the waiter list links and
clears Waking or enters the wakeup if the lock has been released.
The Snapin Cache is used to store ISnapinAbout Information (Name, Description,
Vendor, Version, Bitmaps and Icon) for a Snapin. It is currently used by the
Add/Remove dialog.
Import some wine code into read_stream_data function in navigate.c.
Import function map_nsresult into nsembed.c.
Define function map_nsreslts in mshtml_private.h.
CORE-14606
* [MSHTML] Import part of Wine commit:
78a05ca6dd
authored Mar 26, 2019 by Jacek Caban
mshtml: Introduce map_nsresult and use it in return_nsstr.
* [MSHTML] Import part of Wine commit:
9944c4bd68
authored Mar 26, 2019 by Jacek Caban
mshtml: Propagate nsIDOMCSSStyleDeclaration errors.
* [MSHTML] Import complete Wine commit:
c2d55cd24e
authored Nov 7, 2022 by Gabriel Ivancescu and included in Wine 7.21 Released 11-Nov-2022
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
This PR is a great start for a new C++ based MMC.
I have some improvements in my source tree which I want to add bit by bit.
My modifications to Marks PR are:
- Renamed ISnapInAbout to ISnapinAbout for compatibility reasons.
- Updated CMakeLists.txt
- Removed the patch to shellutils.h because it seems to already have been applied.
- `HalpDebugPciDumpBus()`: Use the `PCI_CONFIGURATION_TYPE()` macro.
- `HalpInitializePciBus()`: Use `PCI_MAX_DEVICES` and `PCI_MAX_FUNCTION`.
See also PR #7416.
RemoveContextFromStack tests pStackEntry == pContextStackHead twice
in the same condition, so the first branch takes every entry that happens
to be the head, not only the one that is head and tail at once.
The branch below it, the one that relinks pStackEntry->pNext->pPrev and
moves the head forward, is then unreachable. Removing the head of a stack
that has more than one entry sets both head and tail to NULL and frees
only that entry, so the remaining entries are lost and leaked.
The body of the first branch is what says which test was meant:
it clears both ends, and that is only correct for the single element case.
Compare the second test against pContextStackTail.
I found this by reading, not by hitting it in a running netsh session,
so I have not confirmed the leak on a live context stack.
Reviewed-by: Whindmar Saksit <whindsaks@proton.me>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Eric Kohl <eric.kohl@reactos.org>
Signed-off-by: Dmitry Rantovov <rantovov5@gmail.com>
The root memory arbiter is the most important out of all of these. The main intention here is that there's some special ranges PCI can't ever look at it even if the firmware tries to claim it can.
This is missing a few gaps still! for example in another PR I'm going to add in the ACPI hal to reserve the ECAM space and once that is published itll also be added to the root mem arbiter.
* [ARBITER] Resolve ARBITER_RANGE_SHARED_DRIVER, fixes compat with Vista+
* [NTOS:IO] Finish the initial impl of the Root Arbiters
* [NTOS:IO][SDK] Fix RtlFindRange truncation, use the Vista+ Sig
Fixes MS storport.sys not being able to work with the qla1xxx.sys driver.
Storport miniport drivers use the PCIConfiguration value
to access the PCI configuration space
(see StorPortGetBusData and StorPortSetBusDataByOffset).
CORE-13866 CORE-20545 CORE-20628
Add Sleep to create delay to allow the send command to process before executing the receive.
This is similar to what we see used in the Wine regression tests.
ROSTESTS-421
* [PCIX] Use the bridge's parent bus in the IRQ translator constructor
* [PCIX] Stop the limit descriptor scan from running off the array
* [PCIX] Build a real resource requirements list for each function
* [PCIX] Skip the right descriptors when draining a device-private group
* [PCIX] Record assigned resources against the BAR they satisfy
* [PCIX] Program device BARs with their arbitrated addresses
---------
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
- Use SAL2 annotations.
- When terminating the process if the hard error did not already,
prefer using `Parameters[1]` that contains the actual failure code,
instead of what `NtRaiseHardError()` returned.
This provides a more convenient way to adjust system volume: through media buttons!
Handles `APPCOMMAND_VOLUME_MUTE`, `APPCOMMAND_VOLUME_UP`,
and `APPCOMMAND_VOLUME_DOWN` notifications.
CORE-12323
Implements transaction support into our arbiter
This the generic logic that allows an entire resource map for a device to be made, and one by one query if it cleanly fits without yet committing to any full requirements.
Tried to put some of the code paths into generic handlers, as NT6+ and NT5.x have different ABIs here.
This technically implements both for now! But obviously we'll be switching to the Vista+ eventually.