https://git.reactos.org/?p=reactos.git;a=commitdiff;h=209439a5aed328b59cd52…
commit 209439a5aed328b59cd52c0c54901a7ca5033af8
Author: Carl J. Bialorucki <cbialo2(a)outlook.com>
AuthorDate: Thu Jun 29 09:50:43 2023 -0600
Commit: GitHub <noreply(a)github.com>
CommitDate: Thu Jun 29 18:50:43 2023 +0300
[BROWSEUI] Add status bar view state persistence (#5366)
- Use `HKCU\Software\Microsoft\Internet Explorer\Main\StatusBarOther` registry key for the setting persistence.
- Set its value to 1 when the status bar is visible, and to 0 when the status bar is hidden.
- Query it when the file browser is initialized to set the correct view state for the status bar.
- Set the default state of the status bar to hidden if the registry key does not exist, matching the behavior of Windows Server 2003.
CORE-19010
---
dll/win32/browseui/shellbrowser.cpp | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dll/win32/browseui/shellbrowser.cpp b/dll/win32/browseui/shellbrowser.cpp
index b12fc20e82d..3aec6c38272 100644
--- a/dll/win32/browseui/shellbrowser.cpp
+++ b/dll/win32/browseui/shellbrowser.cpp
@@ -709,7 +709,10 @@ CShellBrowser::CShellBrowser()
fCurrentShellViewWindow = NULL;
fCurrentDirectoryPIDL = NULL;
fStatusBar = NULL;
- fStatusBarVisible = true;
+ fStatusBarVisible = SHRegGetBoolUSValueW(L"Software\\Microsoft\\Internet Explorer\\Main",
+ L"StatusBarOther",
+ FALSE,
+ FALSE);
fCurrentMenuBar = NULL;
fHistoryObject = NULL;
fHistoryStream = NULL;
@@ -788,8 +791,6 @@ HRESULT CShellBrowser::Initialize()
fStatusBar = CreateWindow(STATUSCLASSNAMEW, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
SBT_NOBORDERS | SBT_TOOLTIPS, 0, 0, 500, 20, m_hWnd, (HMENU)0xa001,
_AtlBaseModule.GetModuleInstance(), 0);
- fStatusBarVisible = true;
-
ShowWindow(SW_SHOWNORMAL);
UpdateWindow();
@@ -3663,6 +3664,15 @@ LRESULT CShellBrowser::OnToggleStatusBarVisible(WORD wNotifyCode, WORD wID, HWND
::ShowWindow(fStatusBar, fStatusBarVisible ? SW_SHOW : SW_HIDE);
RepositionBars();
}
+
+ DWORD dwStatusBarVisible = fStatusBarVisible;
+ SHRegSetUSValueW(L"Software\\Microsoft\\Internet Explorer\\Main",
+ L"StatusBarOther",
+ REG_DWORD,
+ &dwStatusBarVisible,
+ sizeof(dwStatusBarVisible),
+ SHREGSET_FORCE_HKCU);
+
return 0;
}
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5cb2b739886d56a08795e…
commit 5cb2b739886d56a08795e387250da6a7729537f4
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Wed Jun 28 17:12:36 2023 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed Jun 28 17:22:01 2023 +0200
[VIDEOPRT] VideoPortGetAccessRanges: Return ERROR_MORE_DATA if there exist more device access ranges that can be returned than what is specified by NumAccessRanges.
---
win32ss/drivers/videoprt/resource.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/win32ss/drivers/videoprt/resource.c b/win32ss/drivers/videoprt/resource.c
index 14ca0e8d163..25c5a89f62c 100644
--- a/win32ss/drivers/videoprt/resource.c
+++ b/win32ss/drivers/videoprt/resource.c
@@ -617,6 +617,8 @@ VideoPortUnmapMemory(
* - NO_ERROR if the resources have been successfully claimed or released.
* - ERROR_INVALID_PARAMETER if an error or a conflict occurred.
* - ERROR_DEV_NOT_EXIST if the device is not found.
+ * - ERROR_MORE_DATA if there exist more device access ranges available
+ * than what is specified by @p NumAccessRanges.
* - ERROR_NOT_ENOUGH_MEMORY if there is not enough memory available.
**/
VP_STATUS
@@ -767,7 +769,7 @@ VideoPortGetAccessRanges(
if (NumAccessRanges < LegacyAccessRangeCount)
{
ERR_(VIDEOPRT, "Too many legacy access ranges found\n");
- return ERROR_NOT_ENOUGH_MEMORY;
+ return ERROR_NOT_ENOUGH_MEMORY; // ERROR_MORE_DATA;
}
RtlCopyMemory(AccessRanges, LegacyAccessRanges, LegacyAccessRangeCount * sizeof(VIDEO_ACCESS_RANGE));
@@ -837,7 +839,7 @@ VideoPortGetAccessRanges(
AssignedCount >= NumAccessRanges)
{
ERR_(VIDEOPRT, "Too many access ranges found\n");
- return ERROR_NOT_ENOUGH_MEMORY;
+ return ERROR_MORE_DATA;
}
else if (Descriptor->Type == CmResourceTypeMemory)
{
@@ -878,6 +880,7 @@ VideoPortGetAccessRanges(
else
DeviceExtension->InterruptShared = FALSE;
}
+ // else if (Descriptor->Type == CmResourceTypeDma) // TODO!
else
{
ASSERT(FALSE);
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=61c77d1f87118b2758855…
commit 61c77d1f87118b27588554ff14ccb69a7910608b
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Wed Jun 28 15:37:55 2023 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed Jun 28 17:21:58 2023 +0200
[XBOXVMP] Real OG XBOX NVidia GPU exposes 3 access ranges, so retrieve them.
CORE-19011
Fix a "bug" I introduced in commit 61012eb54.
VideoPortGetAccessRanges() expects the caller to specify at least the
total number of ranges the hardware exposes, otherwise it fails with
ERROR_MORE_DATA. (Tested also with the help of Windows' videoprt.sys.)
On real original XBOX there are three:
```
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation NV2A [XGPU] [10de:02a0] (rev a1)
Subsystem: Unknown [0000:0000]
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 03
Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
Memory at f0000000 (32-bit, prefetchable) [size=128M]
Memory at 00000000 (32-bit, prefetchable) [size=512K]
```
Thanks to Stanislav and Daniel for tests on the real XBOX.
---
win32ss/drivers/miniport/xboxvmp/xboxvmp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/win32ss/drivers/miniport/xboxvmp/xboxvmp.c b/win32ss/drivers/miniport/xboxvmp/xboxvmp.c
index 5cf76e08b12..0c9e1f67ee8 100644
--- a/win32ss/drivers/miniport/xboxvmp/xboxvmp.c
+++ b/win32ss/drivers/miniport/xboxvmp/xboxvmp.c
@@ -62,7 +62,8 @@ XboxVmpFindAdapter(
{
PXBOXVMP_DEVICE_EXTENSION XboxVmpDeviceExtension;
VP_STATUS Status;
- VIDEO_ACCESS_RANGE AccessRanges[2];
+ /* 3 access ranges: for MMIO, VRAM, and Indirect memory access IO ports */
+ VIDEO_ACCESS_RANGE AccessRanges[3];
USHORT VendorId = 0x10DE; /* NVIDIA Corporation */
USHORT DeviceId = 0x02A0; /* NV2A XGPU */
ULONG Slot = 0;