Commit Graph

1038 Commits

Author SHA1 Message Date
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
Terry MacDonald
2deee7eb15 [WIP] part implementation of single instance helper
Mainly based on Johan Larsson Gu.Wpf.SingleInstance and Novotnyllc SingleInstanceHelper code, extracting the various bits that make sense for DisplayMagician. Using a mutex, and System.Runtime.Remoting.Channels.Ipc
2021-12-30 21:31:54 +13:00
Terry MacDonald
d4d93db19d Merge branch 'develop' of https://github.com/terrymacdonald/DisplayMagician into develop 2021-12-30 13:58:03 +13:00
Terry MacDonald
64c64a76a4 README update and shortcut focus fix 2021-12-30 13:57:11 +13:00
terrymacdonald
809ab9d577
Merge pull request #69 from terrymacdonald/dependabot/nuget/develop/McMaster.Extensions.CommandLineUtils-4.0.0
Bump McMaster.Extensions.CommandLineUtils from 4.0.0-beta.74 to 4.0.0
2021-12-29 22:57:08 +13:00
terrymacdonald
4f45857321
Merge pull request #71 from terrymacdonald/dependabot/nuget/develop/NUnit3TestAdapter-4.2.0
Bump NUnit3TestAdapter from 4.1.0 to 4.2.0
2021-12-29 22:56:46 +13:00
dependabot[bot]
934e13295a
Bump NUnit3TestAdapter from 4.1.0 to 4.2.0
Bumps [NUnit3TestAdapter](https://github.com/nunit/nunit3-vs-adapter) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/nunit/nunit3-vs-adapter/releases)
- [Commits](https://github.com/nunit/nunit3-vs-adapter/compare/V4.1.0...V4.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-28 08:25:45 +00:00
Terry MacDonald
14ccfbd145 Updated initial display profile message. 2021-12-28 11:41:43 +13:00
Terry MacDonald
67b6dec78b Added help buttons to all UI windows
I redeveloped the help wiki at the guthub site, and took the opportunity to add some guidance to the different UI windows that would be most helpful there. I also added a new 'Initial displaymagician setup' wiki page to help people just starting out.

Hopefully helps with #70
2021-12-28 10:28:02 +13:00
dependabot[bot]
5f933a47c8
Bump McMaster.Extensions.CommandLineUtils from 4.0.0-beta.74 to 4.0.0
Bumps [McMaster.Extensions.CommandLineUtils](https://github.com/natemcmaster/CommandLineUtils) from 4.0.0-beta.74 to 4.0.0.
- [Release notes](https://github.com/natemcmaster/CommandLineUtils/releases)
- [Changelog](https://github.com/natemcmaster/CommandLineUtils/blob/main/CHANGELOG.md)
- [Commits](https://github.com/natemcmaster/CommandLineUtils/compare/v4.0.0-beta.74...v4.0.0)

---
updated-dependencies:
- dependency-name: McMaster.Extensions.CommandLineUtils
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-27 08:23:37 +00:00
Terry MacDonald
810f1363f2 Update the Wix Installer to force an explorer restart
Updated to 2.1.5.5
2021-12-27 21:18:54 +13:00
Terry MacDonald
76ef6015b4 Updated COM DLL path 2021-12-27 19:31:46 +13:00
Terry MacDonald
53df422944 Fixed UI issues and updated Shortcuts UI
Also updated EULA to 2022. And fixed the DisplayMagician Explorer update.
2021-12-27 09:58:29 +13:00
Terry MacDonald
552727c9be Produced a new build 2021-12-26 22:39:10 +13:00
Terry MacDonald
5874d1c26b Added 'Runas' Administrator UAC for starting processes
DisplayMagician can now run a Main Application, Start ptogram or Stop Program as Administrator (usin 'Runas') which will bring up a UAC prompt. Works fine for all three types of process stat, so will keep it there :)

Please note, there isn't any run as administrator fuctionality for the Games Launchers as they don't support that at all, and if I tried to add it, it would get really tricky really quickly. This functionality should suffice for 99% of use cases.
2021-12-26 14:43:16 +13:00
Terry MacDonald
b1fa93b5be Added 'don't start if running' option to stop programs 2021-12-26 10:38:40 +13:00
Terry MacDonald
2ec08c4aca Added graying out images when not in use
Helps inform the user in the UI when they are in Application mode versus Game mode
2021-12-26 10:10:48 +13:00
Terry MacDonald
2b999d849c Working shortcut form control refactor 2021-12-26 09:13:21 +13:00
Terry MacDonald
23cd6badb4 [WIP] Managed to get the game list working correctly
Was having problems with the game icons being displayed when the shortcut was an application. But fixed now.
2021-12-25 21:20:28 +13:00
Terry MacDonald
250898ad8f Try to get the game list showing on load in Application mode
The shortcutform has an issue showing the games list icons in Application mode. It works so well in Games mode, but Application mode starts blank.
2021-12-24 23:30:33 +13:00
Terry MacDonald
7ea6383b38 [WIP] Revamped ShortcutForm to make more robust
Changed the majority of the Shortcut loading code to be way more robust, and clearer to follow. The code had grown organically since the beginning of DisplayMagician, and really, really required some changes to make it all more robust and easier to make changes in the future. This is the first commit of that code so that I can ensure I have an offsite backup.

There is still a bit more of testing and bug hunting to do before I can be sure that it is all ready to release.
2021-12-24 14:00:50 +13:00
Terry MacDonald
4217d87f7a Updated README 2021-12-23 19:01:28 +13:00
Terry MacDonald
146129a088 Updated to v2.1.4.1 2021-12-23 18:50:35 +13:00
Terry MacDonald
de1f6654c3 Fixed non-Steam Games in Steam Game list
Fixes #68. The reason DisplayMagician was crashing was that it was hitting a Uplay Game in the Steam Library. This was not a valid thing to see. The reason DisplayMagician was doing that was because of a bug in the way that the list of installed games was combined. This bug has been in all 2.x versions of DisplayMagician, and would have affected anyone with Steam and any one more GameLibrary (e.g. GOG, Epic, Uplay etc).

I also managed to find a potential issue with editing shortcuts that I've hopefully now averted.
Properly clear out the form and all it's storage variables when the form loads (done)
Add in some protection logic to avoid a crash even if this situation occurs again (partly done)

Additionally, I found a recursive logic flaw that meant that DisplayMagician used WAAAAAAAAAAAAAY more memory than it needed to. I'm talking 5GB of memory rather than the 129MB it was supposed to do. So I'm so thankful that you logged this issue so I could find that one :).
2021-12-23 18:45:04 +13:00
Terry MacDonald
c87f55c4a9 Updated version to 2.1.3.0 for release 2021-12-21 09:30:49 +13:00
Terry MacDonald
e058ec41a3 Fixed startprogram UI and made ShortcutRepository constructor more robust
Fixes #67 and hopefully fixes #68
2021-12-21 09:26:18 +13:00
Terry MacDonald
186325f587 Fixed game library text alignment in Shortcut Form 2021-12-19 09:49:46 +13:00
Terry MacDonald
911313252f Slight tweak to main form positioning
The exit button and version strings were too close to the bottom of the screen.
2021-12-19 09:46:42 +13:00
Terry MacDonald
8326b5697f Updated README 2021-12-18 22:28:45 +13:00
Terry MacDonald
11f231a9f1 Merge branch 'develop' 2021-12-18 21:58:12 +13:00
Terry MacDonald
f5018398f4 Made new build. 2021-12-18 21:57:46 +13:00
Terry MacDonald
648bbccaca Tweaked various UI features to support resizing
Improved the minimum form sizes for multiple forms to stop them looking bad.

Updated the DisplayMagician and DisplayMagicianShared assembly versions to v2.1.2.0 in preparation for release as the next version of DisplayMagician.
2021-12-18 21:55:39 +13:00
Terry MacDonald
a54ca31503 Made Display Profile window resizeable 2021-12-18 16:12:43 +13:00
Terry MacDonald
97a4e5f170 Added resizable Shortcut Form 2021-12-18 14:38:00 +13:00
Terry MacDonald
da8d5de7c3 Fixed GUI display across multiple adapters
Found a bug in the NVIDIA screen generation logic. Fixed it, then replicated the fix in AMD and Windows functions.
2021-12-17 12:25:02 +13:00
Terry MacDonald
94e8ffe338 [WIP] Attempt to fix the GUI display for MST DisplayPort connections
Displays daisy-chained via DIsplayPort MST devices aren't shown in the GUI properly. First attempt at a fix.
2021-12-17 11:53:23 +13:00
Terry MacDonald
de1d93ee4d Updated WinLibrary to v1.3.8
This version adds USB device support, and SuperDisplay detection (it is a way to use an Android Tablet as another windows display).

Also fixes cloned displays so that it uses the path priority rather than relying on HDR settings for mapping the cloned display ID to the real Display ID. This corrects some errors which occurred when some earlier screens didn't support HDR or the advanced Windows colour settings. It will now work in those situations.
2021-12-16 12:25:11 +13:00
Terry MacDonald
22ae2bc178 Fixed multiple adapters and unsupported HDR parsing
Now supports multiple display adapters. Has been tested by @matthex with his 7 screens and 2 display adapters and works. Should fix #60 finally.

Also changed the way that cloned display configurations are patched. Was using the HDR structure previously as that contains a direct mapping, but of course it completely breaks if HDR information isn't supported by the monitor, or provided over the connection technology used. So the changes I made now use the display path priority order to figure out which cloned monitor belongs to which item.

Firstly, the UID's are pulled from the physical displays so that we have a list of them. We then go through the paths, and for each target we check if there is a matching physical UID. If there is NOT a matching physical ID, then it is a cloned display target. We store that for later.

Next, we go through the paths again, and we figure out which physical displays are NOT in use as display targets. When we have that list, we then map the left over physical displays to the cloned displays in path priority order.

Finally, we then go through each cloned display target in the paths array, and set it to the configuration that windows needs so it will make a cloned display. We also go through the modes array, and set the physical display id to the corresponding mapped physical UID we calculated earlier.

All of this results in Windows accepting the cloned display configuration as expected.
2021-12-12 09:23:24 +13:00
Terry MacDonald
9416ac3346 Updated WinLibrary to latest version
This corrects some errors with the WinLibrary and how it handles cloned displays.

Also removed the 0.5 second delay between the end of the NVIDIALibrary call, and the start of the WinLibrary one, because they do not appear to be needed based on the NVIDIALibrary testing we've been doing with NVIDIAInfo.

Also corrected some log entries and comments.
2021-12-11 00:15:49 +13:00
Terry MacDonald
a7ef20677d Fixed some log entry names 2021-12-09 08:40:51 +13:00
Terry MacDonald
d546bf85fb Added a WinLibrary update config to refresh config
I *think* that NVIDIA Surround and AMD Eyefinity changes are so great that WinLibrary gets confused and gives up. NVIDIA Surround and AMD Eyefinity affects the windows display layout so much. This change adds a windows config refresh after the NVIDIA or AMD config is applied to make sure that the winLibrary calls are using the latest updated active config that results from the NVIDIALibrary and AMDLibrary config changes.
2021-12-08 21:43:22 +13:00
terrymacdonald
041bdfe74f
Merge pull request #62 from terrymacdonald/dependabot/nuget/develop/NLog-4.7.13
Bump NLog from 4.7.12 to 4.7.13
2021-12-07 18:33:44 +13:00
Terry MacDonald
b34cdcce6c Updated to latest WinLibrary version
This version of WinLibrary improves handling of multiple display adapters to cope with multiple displays across multiple display adapters. Hopefully fixes #60 (but no guarantees yet)
2021-12-07 18:33:16 +13:00
dependabot[bot]
b826cc05fc
Bump NLog from 4.7.12 to 4.7.13
Bumps [NLog](https://github.com/NLog/NLog) from 4.7.12 to 4.7.13.
- [Release notes](https://github.com/NLog/NLog/releases)
- [Changelog](https://github.com/NLog/NLog/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/NLog/NLog/compare/v4.7.12...v4.7.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-06 08:24:45 +00:00
terrymacdonald
6205ff21c4
Update codeql-analysis.yml 2021-12-04 11:12:26 +13:00
terrymacdonald
690d974911
Update codeql-analysis.yml 2021-12-04 11:10:33 +13:00