Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge main changes #1

Merged
merged 2,784 commits into from
Jul 29, 2023
Merged

Merge main changes #1

merged 2,784 commits into from
Jul 29, 2023

Conversation

StartForKiller
Copy link
Owner

Purpose

Do a quick recap of your work here.

JIRA issue: CORE-XXXX

Proposed changes

Describe what you propose to change/add/fix with this pull request.

TODO

Use a TODO when your pull request is Work in Progress.

  • [ ]
  • [ ]

katahiromz and others added 30 commits June 19, 2023 14:11
...and omit cloning HBITMAP in SelectionModel::InsertFromHBITMAP. CORE-18867
- Add CMainWindow::CanUndo and CMainWindow::CanRedo and use them.
- Fix wrongly-disabled Undo/Redo in some cases.
CORE-18867
Fix filename extension cases and "File Type" field. If no filename extension on save, then append ".png" to the filename.
CORE-18867
It has a better license (GPL) and does not have visible drawbacks
compared to framebuf_new.
It doesn't seem to be better than the current "framebuf", and has an
unfriendly license (NT4 DDK Sample).
This is an unfinished attempt to rewrite the driver by Magnus Olsen,
dating back to 2007.
In both lines 451 and 474:
uefidisk.c: warning C4553: '==': result of expression not used; did you intend '='?

It's "funny" that GCC builds doesn't catch those...
ntoskrnl.c.obj : warning LNK4006: _KeStallExecutionProcessor@4
already defined in stubs.c.obj; second definition ignored.
… max values.

See https://www.osronline.com/article.cfm%5Earticle=538.htm

[SCSIPORT] Remove 'MaxBus' variable, deprecated since commit fc3d38d (r26220).
Store the state of the explorer toolbar, locked or unlocked, in the proper
registry location and set the proper toolbar state when initialized.

CORE-9094

- Set `HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Locked`
  to 1 when the explorer toolbar is locked, 0 when the toolbar is unlocked.
- Query `HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Locked`
  when the toolbar is initialized to set the correct locked state.
- Set the default state of the toolbar to locked if the registry key does not
  exist, matching the behavior of Windows Server 2003.
…splay mode (#4519)

CORE-17932

[ENG] Implement DirectDraw management in switch display mode functions
(e.g. resolution change, color depth, display frequency etc.):

- Switch DirectDraw instances between the two PDEVs (the current one and
  the new one allocated by ourselves) by calling dxg!DxDdDynamicModeChange
  function.

- Suspend them before and resume after the display mode switch, by calling
  dxg!DxDdsuspendDirectDraw and dxg!DxDdResumeDirectDraw appropriately.

We currently don't have these functions implemented, but MS DXG has, so
it allows to properly manage DirectDraw PDEVs using this driver, similarly
to Windows.
My analysis confirms that these functions are always called in XP/2k3 on
display mode switch, even when there is no any DirectX app running at the
moment. Analyzing their prototypes show that my guesses are correct.

- Initialize hDev and dhpdev members for EDD_DIRECTDRAW_GLOBAL for newly
  created surfaces, switch them during mode change and re-initialize after
  it also. They are commonly used by DirectDraw stack.
  In addition, enable DirectDraw for old and new PDEVs, by calling
  dxg!DxDdEnableDirectDraw function.


[NTDDRAW] Additionally, fix usage of DirectDraw lock count in the PDEVOBJ
structure.

- Enable cDirectDrawDisableLocks member for storing its value, instead of
  DxDd_nCount, which is marked as ROS-specific.

- Use it in win32k!DxEngGet/SetHdevData for getting/setting DirectDraw
  count appropriately.

My analysis also shows that in Windows, the PDEVOBJ::cDirectDrawDisableLocks
method calls DxEngGetHdevData with type 8, which corresponds to our DxDd_nCount.
So there are no doubts that this member is used there.

- Rename DxEngGetHdevData_dd_count alias of type 8 to DxEngGetHdevData_dd_locks,
  to match more accurately an actual member name. Update the enumeration
  and fix all code parts appropriately.

All these changes allow to properly change display mode during executing
DirectDraw applications, when they try to switch in full-screen mode.
At least a bugcheck that happened before my changes, does no longer appear.

There are still some games that don't run correctly, as if there is no
3D acceleration (which actually exists). This requires further investigations.
…Draw object creation (#5329)

CORE-17561, CORE-17932, CORE-18221

Do it at each system startup instead: Remove old DirectX initialization code.
It's now outdated and not needed anymore.

Previously, the corresponding hackish intEnableReactXDriver() function
did two things: load dxg.sys and enable DirectDraw.
Now loading DirectX graphics is done during WINSRV initialization, and
enabling DirectDraw is called during each (and also first) display mode
switch, as in Windows. As debug analysis proves, there are no any other
calls in NtGdiDdCreateDirectDrawObject, besides the corresponding DXG
function.
Fix the behavior of the ShapeTool in pressing Shift key. CORE-18867
Use LGPL-2.0-or-later as the first available LGPL version on SPDX
taking into account 530512f commit message.

CORE-18867
- Add missing mnemonic keys
- Remove unneeded mnemonic keys
- Fix some translated strings being too long
- Fix mispositioned elements
- Reposition overlapping elements

Validated the changes with Resource Hacker. CORE-18867
zefklop and others added 27 commits July 24, 2023 23:29
…tc. (#5474)

- Implement SHPropertyBag_Delete, SHPropertyBag_WritePOINTL, SHPropertyBag_WritePOINTS, and SHPropertyBag_WriteRECTL functions.
- SHPropertyBag_WriteInt is an alias to SHPropertyBag_WriteLONG.
- Modify shlwapi.spec.
- Modify shlwapi_undoc.h.
- Add SHPropertyBag testcase to shlwapi_apitest.exe.
CORE-9283
#5479)

- Add VariantChangeTypeForRead helper function.
- Implement SHPropertyBag_ReadType, SHPropertyBag_ReadBOOL, SHPropertyBag_ReadBOOLOld, SHPropertyBag_ReadSHORT, 
SHPropertyBag_ReadLONG, and SHPropertyBag_ReadDWORD functions.
- SHPropertyBag_ReadInt is an alias to SHPropertyBag_ReadLONG.
CORE-9283
- Fix errors on 2nd stage setup epilogue.
- Just return E_NOTIMPL in InstallCallback_GetBindInfo function. That's Okay.
CORE-15786
Lossless optimization of png images using `pngslim`.

Saves some bytes. No code changes.
Stop storing and setting window positions from the taskbar and rely
on the window's existing position instead. Partial revert of e6bced7.

Windows are now correctly positioned when being restored from the taskbar.
This also fixes an issue where minimizing and opening Task Manager causes
the window to become blank when running our shell in Windows Server 2003.

CORE-19055 CORE-13895 CORE-18350
Add a string pointer local variable, assign it and operate on it.
This should eliminate an exception and make LsapIsLocalComputer()
function operate correctly.

CORE-18996
…#5487)

- Implement SHPropertyBag_ReadBSTR, SHPropertyBag_ReadStr, SHPropertyBag_ReadPOINTL,
SHPropertyBag_ReadPOINTS, and SHPropertyBag_ReadRECTL functions.
- Add link to oleaut32 in shlwapi_apitest.
CORE-9283
* Detail view by default, except in special folders
* Added hack/fixme disclaimer
These are used in the paging path, when the page is currently in the process of being read from or written to the disk. While YieldProcessor() provides the chance to switch context to the other paging thread, it only does so, once the current thread's quantum has expired. On a single CPU system this effectively leads to busy waiting for the rest of the quantum. On SMP systems this could succeed earlier, thus reducing latency, but it would still contribute to high CPU usage, while waiting for the IO operation to complete, which is not what we want.
Using KeDelayExecutionThread() will instantly allow another thread to run, providing enough time to complete the IO operation.
MmGetSectionAssociation races with _MmSetPageEntrySectionSegment without sharing a lock. So we need to hold the PFN lock, until we have referenced the section segment found in the RMAP. This prevents that a section segment, which still has associated RMAPs from being deleted behind our back.
The function updates the entry in the section page table and updates the section association rmaps for it. In the page-in path, when the new section association is set before the entry is updated, a concurrent attempt to unmap the page would find an inconsistent entry, where there is an rmap, but the section page table entry is still an MM_WAIT_ENTRY.
This is required, when RosMm unmaps locked pages and they later get unlocked.
@StartForKiller StartForKiller merged commit 080a2a7 into StartForKiller:CORE-15990 Jul 29, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet