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

Modernize Transfers-window #15885

Closed
AliveDevil opened this issue Apr 25, 2024 · 2 comments · Fixed by #15912
Closed

Modernize Transfers-window #15885

AliveDevil opened this issue Apr 25, 2024 · 2 comments · Fixed by #15912
Assignees
Labels
Milestone

Comments

@AliveDevil
Copy link
Contributor

AliveDevil commented Apr 25, 2024

This is an ongoing effort to improve the resource usage of Cyberduck on Windows.

Addresses:

  • ToDo: Collect all handle related tickets here in list.

In switching the UI stack from WinForms (currently) to WPF, we gain the ability to reduce our resource usage dramatically, by not requiring a window handle for each and every single control in the transfers window.
Instead there is only one window handle allocated for the entire window, everything else is done in software.
A welcome side-effect of this is the offload of rendering to the GPU, reducing the software-rendering requirements of WinForms.

With this, the foundation (controller-architecture) is switching to a view-model based approach, allowing an easier transition to another UI framework in the future.

WPF Limitations as outlined in #13036 apply.

Workaround

The Microsoft documentation provides more information on this issue:

User interface objects support only one handle per object. Processes cannot inherit or duplicate handles to user objects. Processes in one session cannot reference a user handle in another session.

There is a theoretical limit of 65,536 user handles per session. However, the maximum number of user handles that can be opened per session is usually lower, since it is affected by available memory. There is also a default per-process limit of user handles.

You can try to solve the issue by increasing the maximum number of user object handles if deleting the Transfers folder doesn't have any effect. Please follow the steps below to do that:

  1. Use the shortcut Win R to open the search box, type regedit, and open the Registry Editor
  2. Copy the following line into the address bar
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
  3. Double-click on the entry USERProcessHandleQuota and increase the maximum number of user handlers. Note: The value must be set to a number between 200 and 18000.
  4. Restart the device
@Tampa
Copy link

Tampa commented May 2, 2024

Will this also finally enable a way to introduce a dark mode?

@AliveDevil
Copy link
Contributor Author

Adding a single dark-mode aware window to Cyberduck won't make much sense.

Besides, the targeted framework for this window won't magically enable dark-mode as it's been released back in 2006, and Microsoft never spent any time backporting Windows platform features back to it, but invented new UI frameworks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants