Commit Graph

983 Commits

Author SHA1 Message Date
Terry MacDonald
3eb0b41846 Added some error messaging 2022-01-29 16:17:28 +13:00
Terry MacDonald
f1657bef82 Added a basic runtime context menu installer 2022-01-29 16:09:18 +13:00
Terry MacDonald
1b07ed72c7 Fixed Desktop Context Menu to use v2.2.0 profile format 2022-01-29 15:30:49 +13:00
Terry MacDonald
362088b5e3 Added checks to pause updating displayconfig while display change occurring
Added some checks to temporarily pause any 'getconfig' type activities while we're changing the displayconfig. This should result in less config corruption, and fewer errors when there are timing edge cases.
2022-01-29 15:25:52 +13:00
Terry MacDonald
76ec3d6426 Fixed bug in TaskBar processing when ni edge available 2022-01-29 14:55:24 +13:00
Terry MacDonald
5577adb9b2 Added message about recreating DisplayProfiles back in
Turns out we do need to make sure that all users recreate their display profiles to handle the new taskbar settings
2022-01-28 17:35:36 +13:00
Terry MacDonald
c1d9577ed1 Merge branch 'develop' of https://github.com/terrymacdonald/DisplayMagician into develop 2022-01-28 17:26:04 +13:00
Terry MacDonald
338c310c2b Made build 2022-01-28 17:25:35 +13:00
Terry MacDonald
b12815dcff Fixed mistaken file copy 2022-01-28 17:18:20 +13:00
Terry MacDonald
7d0c8e1ca4 Updated NVIDIALibrary and WinLibrary to latest version 2022-01-28 17:04:42 +13:00
Terry MacDonald
4661ffb72f Removed restart logic from WinLibrary 2022-01-25 09:42:50 +13:00
Terry MacDonald
90149e1d9d Merged develop into feature-taskbar-setting branch 2022-01-25 09:30:23 +13:00
Terry MacDonald
be30996020 Changed the message shown to users to remove recreate message
We are able to patch the taskbar settings in DisplayProfiles without needing to get the users to remake their display proifiles. This changes the messaging to users.

This changes *should* be the last ones needed to get taskbar setting integrated. Fixes #78 (as much as we can fix it).
2022-01-25 09:28:13 +13:00
terrymacdonald
c32edfd18d
Merge pull request #82 from terrymacdonald/dependabot/nuget/develop/NUnit3TestAdapter-4.2.1
Bump NUnit3TestAdapter from 4.2.0 to 4.2.1
2022-01-24 23:14:28 +13:00
Terry MacDonald
f40863685c Modify tasbkarsettings to only get the useful settings
Also updated the code comments to describe the various values and what they mean.
2022-01-24 21:39:49 +13:00
dependabot[bot]
f0a931cb14
Bump NUnit3TestAdapter from 4.2.0 to 4.2.1
Bumps [NUnit3TestAdapter](https://github.com/nunit/nunit3-vs-adapter) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/nunit/nunit3-vs-adapter/releases)
- [Commits](https://github.com/nunit/nunit3-vs-adapter/compare/V4.2.0...V4.2.1)

---
updated-dependencies:
- dependency-name: NUnit3TestAdapter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-24 08:26:50 +00:00
Terry MacDonald
b6e0f83163 Working windows taskbar location tracking
Works on Win 10, and partially on Win 11. Win11 won't update the main window until explorer.exe is restarted :(. There is talk that an upcoming Win 11 update will change that behaviour.
2022-01-23 22:45:02 +13:00
Terry MacDonald
918e3cda04 Initial working TaskBar position changes
Note - doesn't work n Windows 11.
2022-01-23 10:33:14 +13:00
Terry MacDonald
587814409a [WIP] Added in TaskBarSettings and restarting explorer 2022-01-22 15:35:25 +13:00
Terry MacDonald
f860b91a72 Enforced update to file format v2.2 2022-01-21 20:37:56 +13:00
Terry MacDonald
f5a8a05e63 Removed unused settings 2022-01-21 18:34:31 +13:00
Terry MacDonald
195820bea6 Make load profile function handle later versions of config file
This change makes the ProfileRepository handle loading json config files from later versions of DM without causing an exception. This will mean that you can install later model config files and still have them work ok.
2022-01-21 18:09:04 +13:00
Terry MacDonald
b50b49af74 Updated some error levels 2022-01-19 22:35:50 +13:00
Terry MacDonald
29b592a6d1 Initial attempt at recording taskbar location
Used some of Soroush Falahati's amazing code, and now have the potential for storing the taskbar display layout. This unfortunately requires a display config change, so I will need to engineer some backwards compatibility.
2022-01-19 22:02:57 +13:00
Terry MacDonald
b148d7484a Updated HDR colour setting logic
The NVIDIA HDR colour logic was flawed, and wouldn't always apply properly. These logic changes now set the NVIDIA HDR colour back to windows controlled each time  so the settings are at a known inital logical state. Then winlibray can set the windows HDR mode, and NVIDIA can set the NVIDIA HDR mode.
2022-01-18 20:43:45 +13:00
Terry MacDonald
3c0ee6d37b Added automatic admin right detection for start programs
Fixes @erbkaiser error he found.
2022-01-17 22:25:07 +13:00
Terry MacDonald
21b9cae0d5 Added 'Send to Clipboard' option
Adds #79.

Also added popup menu to DisplayProfile window as it was missing.
2022-01-17 21:07:48 +13:00
Terry MacDonald
d6b0a51b19 Fixed toast notifications 2022-01-17 19:58:51 +13:00
Terry MacDonald
e2b1b1afa1 Attempts to get Windows Toasts working again
Since I multithreaded DIsplayMagician the Windows toasts don't work when DM is installed (they work when testing as I use another mechanism for that). This was my first session trying to troubleshoot that.
2022-01-13 21:41:18 +13:00
Terry MacDonald
100d04e057 Removed unneeded semaphoreslim release 2022-01-13 18:31:55 +13:00
Terry MacDonald
8bc028a99e Made semaphoreslim work reliably
Had always expected that the semaphore slim would need to be released, but now that I made other changes it needed a check before releasing.
2022-01-13 18:25:43 +13:00
Terry MacDonald
60f3d191df Fixed the exception errors while cancelling shortcut 2022-01-10 21:58:53 +13:00
Terry MacDonald
d24b15d37a [WIP] Threading improvements
Found that I was combining Threads and Tasks together...never a good idea. Have moved fully over to a Task based model. Now still having issues with parallelism.
2022-01-10 21:06:02 +13:00
Terry MacDonald
40dd80f8b0 Revert DesktopNotificationManagerCompat changes 2022-01-10 19:53:13 +13:00
Terry MacDonald
312d056705 Fixed non-working Windows Toast notifications
Also cleaned up some old unused IPCService/Client code.
2022-01-10 09:27:34 +13:00
Terry MacDonald
81f34c3b9c Fix Invoke blocking the game starting
Moved it to a non-blocking BeginInvoke thread as it doesn't matter when it ends, and that way we keep the application running.
2022-01-09 20:06:46 +13:00
Terry MacDonald
475dcaddc9 Fixed bug with disabling broken shortcuts
We weren't disabling the invalid Game Shortcuts from the right-click system tray menu, even though they couldn't be used. Fixed that.
2022-01-08 20:31:10 +13:00
Terry MacDonald
8b7b5f2e75 Updated version to 2.2.0.1 2022-01-08 10:44:54 +13:00
Terry MacDonald
fffe1a8bf1 Updated explorer install restart and added log rolling
Updated the installer so that windows update is only forced to restart if it needs to be.

Added log rolling to DisplayMagician so that it keeps the last 4 log files as well as the one currently in use. Also updated the support ZIP file creation logic to include those extra log files so I can see exactly what's been going on, as well as added in the DisplayProfiles_2.0.json as well which I'd missed previously.
2022-01-08 10:32:54 +13:00
Terry MacDonald
cd9bec7e26 Added Invoke checking to NotifyIcon
This is an attempt to avoid any potential non-thread safe UI updates to keep DisplayMagician as stable as possible. Moving to a thread-based model means that I need to be a bit more aware of the thread safe practices and attempt to avoid unsafe operations.
2022-01-06 09:28:56 +13:00
Terry MacDonald
ddd48b577d Changed notification icon handling
Made the code more robust and able to work using the new threaded instances
2022-01-06 09:05:55 +13:00
Terry MacDonald
ce351109a9 Fixing Tasks so they wait until they block
This is being done as the current UI code expects the shortcuts to block. This will be changed in the future when we move to .net6 and MAUI

Also fixed a bug I discovered with the stop program still being started if the user disabled it. And added in checking for the stop prgrams existence.
2022-01-05 22:17:59 +13:00
Terry MacDonald
a824f11955 Making sure all RunShortcuts are changed to Tasks
This ensures that all pathways to run a shortcut are covered by the protection of only allowing one profile change or shortcut run at a time. This will ensure that the single instance doesn't end up with multiple runs occurring at the same time and race conditions happening.
2022-01-05 21:17:42 +13:00
Terry MacDonald
4444d2b93b Fixed stop program disablement
The stop program wasn't actually able to be stopped through the GUI due to the fact I missed updating the save and load functions to store that information :/. This has now been rectified.
2022-01-04 23:16:45 +13:00
Terry MacDonald
5f6c7d6e54 Catchup git changes 2022-01-04 22:47:00 +13:00
Terry MacDonald
5a380c46cb Added singleinstance thread safety and fixed process stopping
Added SemaphoreSlim control to make sure that only one task at a time can be run. If any other task (Display Profile change or a Game Shortcut run) is attempted, it is silently ignored by DisplayMagician. This code then means that only a single instance of DisplayMagician is loaded.

Also found a bug in the StopProcess function that was stopping processes from properly being stopped. This has now been corrected, and fixes #75
2022-01-04 22:46:11 +13:00
Terry MacDonald
f6410de1ca Working Single Instance
Works fine, but still locks the UI. There is the potential for a race condition now as we have multiple pathways to run a shortcut or change the display profile. Next step is to stop that from being a problem.
2022-01-03 21:39:19 +13:00
Terry MacDonald
35fe7dc36d [WIP] Tweaked Action callback
Now instead of needing to be specified within the main Program file, we now have something that is defined and run from the SingleInstance class. I'll be adding the code to actually handle the different commandline options shortly.
2022-01-02 21:57:35 +13:00
Terry MacDonald
a33bd1bf7a [WIP] Basic working commandline handoff
The code now starts a namedpipeserver if it's the first instance, and if it's the 2nd instances it sends the full command line as an array to the first instance to get it to perform the work.
2022-01-02 09:26:39 +13:00
Terry MacDonald
bdd93e0956 [WIP] Initial part of singleInstance 2022-01-01 16:22:12 +13:00