Commit Graph

701 Commits

Author SHA1 Message Date
Terry MacDonald
21b121199b Fixed ProfileDisplayIdentifier double up
Now ProfileItem loads properly from JSON file, which means that the profile matching works, so DisplayMagician now matches the profile if it's current.
2021-09-19 21:00:47 +12:00
Terry MacDonald
cd71725617 [WIP] Fixed error loading JSON after save
There was a problem with the unused display config containing null values on save, which meant that the JSON would be invalid when loaded in the next time. The fix was to ensure that both NVIDIA and AMD both were filled with a default config when a new profiles was created. This means that the real config would overwrite whichever config was needed, and the JSON file would work as all objects were populated correctly!
2021-09-19 20:56:58 +12:00
Terry MacDonald
1591fd534e Upgraded AMDLibrary to v1.0.0
This is the first actual working version of the AMDLibrary from AMDInfo v1.0.0. This is the first time that all 3 different video libraries are in DisplayMagician and working (mostly). The AMD Screens structu creation logic in ProfileItem still needs to be updated to cope with the AMD Eyefinity configuration, but it at least defaults to the windows one at the moment so it doesn't crash (whew).

Also managed to bugfix the recent libraryfolder.vdf parsing change that a recent Steam Library change oforced on us. The logic wasn't working, and so the parsing didn't work, which in turn caused an exception when it came time to look up the game shortcut validity.
2021-09-18 21:55:43 +12:00
Terry MacDonald
9c0241c720 Corrected Uplay lgging text to Steam 2021-09-10 19:47:50 +12:00
Terry MacDonald
7b57087d3a Removed LogReporter and updated ShellExtension
Removed LogReporter as DisplayMagician now contains most of the required logging that I need to actually fix things.

Updated the ShellExtension as it was looking for the old v1 JSON file. This now works correctly with the new v2 JSON file

Also updated the DisplayMagicianSetup to remove unneeded files to make the overall package smaller. It's now slimmed down to 12MB now, and it was 14MB. So that's a good bit of space saving!
2021-09-09 21:23:34 +12:00
Terry MacDonald
914ee2cc06 Initial partial creation of cancel logic
This code eventually will be used to allow the user to cancel waiting for the game/app. This won't work at the moment though as we actually monitor for the game on the UI thread (a big no no). I'll have to fix this in an upcoming update, but for now we'll leave it here.
2021-09-09 20:53:41 +12:00
Terry MacDonald
67bb58ae57 Fixed exception during transition to Mosaic
Issue when creating screens structure while NVIDIA setup is still partway through its changeover as it causes an exception. Now capture that exception and ignore it, as the screens structure is updated correctly when the screen finally settles down.
2021-09-09 19:55:24 +12:00
Terry MacDonald
c10e000559 Add logger to DisplayProfileForm 2021-09-09 09:23:28 +12:00
Terry MacDonald
6bd9898ea8 Fixed inconsistent NVIDIA HDR display setting
THere was an unneeded check that prevented the NVIDIA HDR settings being applied when it should have been. This in turn meant that the display profile equality matching wasn't working as the applied display profile was sufficiently different to the one selected and applied that it wouldn't match, and would instead display the brand new profile interface. This has been corrected now.
2021-09-09 09:21:53 +12:00
Terry MacDonald
28a8f131b3 Workaround Windows changing display source order
Windows changes the display source order which mucks up the equality matching in DM. This change attempts to mitigate that fact.

There were also errors in the HDR settings captured, which indicate that the HDR changes weren't finishing before they were being recorded. This change attempts to take care of that too.

All tests so far seem to work, so lets see how things go!
2021-09-08 20:04:37 +12:00
Terry MacDonald
1966412162 Mostly working Equality part 3
Equality works until we return from a surround profile to a non-surround profile. At this point the displays are reordered by windows, and the windows display configus don't match any more. Addtionally, it looks as though we need a 0.5 second pause between applying the configuration, and reading the new config. There appears to be a difference between HDR before we changed to the surround proile and after we've returned, and that's not a good thing!
2021-09-08 11:00:00 +12:00
Terry MacDonald
fef3dbf1e0 Part 2 of the move to a single ProfileItem
Mostly works now! Only bit still needing work is the Avtive profile detection to detect the non-surround profile when we return from surround. I think it's to do with the windows display number changing :(. I need to check that.
2021-09-07 22:08:54 +12:00
Terry MacDonald
f8e9eecf81 Removed derived ProfileItem classes
The derived ProfilteItem classes were an unnecessary distraction and wasted time I could be spending on other things. This set of changes are the first part of removing those derived classes and moving to a single ProfilItem class again, but with different configuration slots within it. Makes equality comparison SO MUCH EASIER!
2021-09-07 21:26:42 +12:00
Terry MacDonald
c59f236524 Still vainly trying to get Equals to work
I am a lot closer at the moment, but there is some bit of logic matching that is escaping me. I think I'm just too tired at the moment, and I need a sleep. I bet this will seem simple in the morning.
2021-09-06 22:08:22 +12:00
Terry MacDonald
0c32b206c0 Potential fix for libraryfolders.vdf change
This (hopefully) should fix #38. Big thanks to @DragRedSim for their help. This will attempt to use the new library file liocation if it's available, and will fall back to the older config.vdf discovery mechanism if it doesn't find the new file.
2021-09-05 22:16:16 +12:00
Terry MacDonald
7c21c19056 Fixed Profile Matching
Found an underlying problem of using the OutputID for displayIdentifier matching as the outputID changes after each reboot. CHanged the DisplayIdentifier to record the type of the connection to the display, which stays the same even if the OututID changes. Also made the ProfileItem.Equals look for DisplayIdentifier ids and match them even if they are in a different order. This seems to happen some times, and I'm not sure why the NVIDIA driver does it!
2021-09-05 21:00:36 +12:00
Terry MacDonald
a07e4ad3f5 Corrected an incorrect logging message clarification
It was set to Error instead of Trace! Corrected now.

Also corrected some incorrect log message descriptions that will mean I look at the right code when I see the errors. There were all the same (as I copied a lot of the code).
2021-09-04 21:27:40 +12:00
Terry MacDonald
13cc7a96c4 Basic working NVIDIA and Windows DisplayMagician
Tested ok so far! Manages to cope with surround dual screen with another standaalone screen fine, and copes with individual screens as well as just surround screens. Tested playing a game shortcut, and it sworks with that too.  It also changes the display background as per the profile settings as was intended! So pretty much everything seems to work fine so far.

I will do a bit more testing, then will probably provide a test version to a couple of testers to try and find errors. I need to try and make this a bit more robust.
2021-09-04 21:16:49 +12:00
Terry MacDonald
708acd3c12 Fixed CompareTo and some Profile Repository loading order 2021-09-04 20:58:08 +12:00
Terry MacDonald
a112326e50 Implemented new derived class equality logic
Used new derived class equality class from https://codinghelmet.com/articles/equals-override which helped me understand the logic for deriving equality between base classes and derived classes. It has now exposed another error in the way FORCED_VIDEO_MODE is being applied and that is now something else I need to fix!
2021-09-04 16:32:42 +12:00
Terry MacDonald
964d982bd1 Fixed Video mode detection without forced parameter
Accidentally broke the auto detection when no forced video command line option given. Now works again.
2021-09-03 22:15:23 +12:00
Terry MacDonald
eef92abebf Fixed DisplayProfile ImageListView
I'd managed to break the Display Profile imagelistview with one of my code clearing escapades, but now I have managed to fix it again!
2021-09-02 15:09:06 +12:00
Terry MacDonald
7772b27f89 Fixed error in comparison function 2021-09-02 14:52:46 +12:00
Terry MacDonald
cab056b7fd Updated the Equality and Comparable operators for ProfileItems
And in doing so, managed to break the Profile image logic!
2021-09-02 14:44:35 +12:00
Terry MacDonald
65bbd1ab66 Added --force-video-library command line option
This feature will allow users to bypass the automatic driver detection functionality so that they can at least force  the use of the built-in Windows driver if NVIDIA or AMD ever have an issue with their drivers.
2021-09-02 13:47:28 +12:00
Terry MacDonald
9cef45416e First working display background per profile
Added functionality to implement display wallpaper changes with each display profile as per #36 and #10. Tested in Windows 10 ok.
2021-09-02 10:42:26 +12:00
Terry MacDonald
ee1d2e4717 Fixed screen drawing for icons and forms
Fixed the NVIDIA screen drawing so that it works fine now.
2021-09-01 22:13:22 +12:00
Terry MacDonald
b6bd89bed2 Updated NVIDIALibrary and WinLibrary based on NVIDIAInfo testing
Added in the ability to map the Windows CCD Display name to NVAPI DisplayId, which will make it possible to use that information within DisplayMagician.
2021-09-01 20:44:00 +12:00
Terry MacDonald
52d2f4f0f6 [WIP] Partially completed NVIDIA spannedScreens
Partway through having the Screens properly populated for the NVIDIA surround screen setups, but have struck an issue with the extra non-surround screens in a combined surround and non-surround screen setup. The additional non-surround screens don't have any X & Y positions set within the mosaic config, which means I should really be using the WIndows config details, but there isn't anyway to identify which windows screen path matches which nvidia display ID. THe only way to do this is to start storing the NVIDIA displayconfig too.
2021-09-01 14:30:33 +12:00
Terry MacDonald
bc6242a8bb Updated NVIDIALibrary and WinLibrary with latest versions.
Latest versions based on tests from NVIDIAInfo
2021-08-31 21:06:08 +12:00
Terry MacDonald
7a4e07f582 Tweak ProfileForm settings button position
Trying to get things to look a little better visually.
2021-08-31 13:26:58 +12:00
Terry MacDonald
8c3e2fd490 Tweaked ShortcutForm UI
Readjusted the placement of the Game components so that I can add some additional process monitoring options when I attempt to make process monitoring more reliable in the future.
2021-08-31 13:19:13 +12:00
Terry MacDonald
ed729a7282 Updated DisplayProfileForm and ShortcutForm 2021-08-31 12:05:42 +12:00
Terry MacDonald
4c8ecc0bf6 Initial completed develop branch merge
Code now compiles, so now it is just some testing to see what is broken!
2021-08-30 12:51:44 +12:00
Terry MacDonald
838ebff43b 2nd parse of the display profile form 2021-08-30 12:36:34 +12:00
Terry MacDonald
b374850bfe Merged develop branch to simplify development 2021-08-30 12:35:52 +12:00
Terry MacDonald
1a6282df1a Initial Windows desktop wallpaper functionality
This is the initial windows desktop functionality, and may work. I've added it to the earlier version of DisplayMagician, but I'm not sure I'll release it. This will instead probably be part of v2.0.0.
2021-08-30 12:26:43 +12:00
Terry MacDonald
a0646c2b8a Initial picturebox configuration
Can now select a new wallpaper and have it appear in the wallpaper picturebox. Also can reopen the profilesettings and the wallpaper will be loaded back into the picturebox. Just need to sort out the clear button and the use current buttons.
2021-08-29 22:54:11 +12:00
Terry MacDonald
3781415dbd Disable unused text field 2021-08-29 22:12:26 +12:00
Terry MacDonald
9f0113fd4c Updated ProfileSettingsForm 2021-08-29 19:58:09 +12:00
Terry MacDonald
bb1fa73c7f Fixed ProfileSettingsForm logic 2021-08-28 21:24:39 +12:00
Terry MacDonald
93c85d7d87 [WIP] Adding wallpaper manipulation 2021-08-27 22:26:12 +12:00
Terry MacDonald
cf0a15acdd Add initial wallpaper changing code 2021-08-27 21:15:53 +12:00
Terry MacDonald
e6e8a4f3c5 Save changes 2021-08-27 20:58:06 +12:00
Terry MacDonald
012fe76b34 [WIP] Researching broken NVIDIA profile matching 2021-08-27 20:57:02 +12:00
Terry MacDonald
b51aefa0ac Update to DisplayProfileForm 2021-08-27 17:55:59 +12:00
Terry MacDonald
293ca14730 Moved RunProfile to ProfileRepository
It makes WAY more sense here.
2021-08-27 17:53:32 +12:00
Terry MacDonald
5eea1f0a95 Fixed NVIDIA profile matching! 2021-08-25 22:00:14 +12:00
Terry MacDonald
ad732d388f Added missing NVAPI Equals tests 2021-08-25 21:45:40 +12:00
Terry MacDonald
d931bdaead Update nuget packages 2021-08-25 20:52:08 +12:00