Commit Graph

328 Commits

Author SHA1 Message Date
Terry MacDonald
76c94c76ae Update version to v1.2.0 2021-06-19 13:38:32 +12:00
Terry MacDonald
48703759bf [WIP] Additional dispId generation tweaks 2021-06-19 13:36:57 +12:00
Terry MacDonald
16c143cffe [WIP] Working nearly DisplayIds
Have now go the required data, but for some
reason AMD is returning two valid adapters
when there is actually just one in the system!

Could be a problem with the device installation,
but I will need figuring out how to either remove
duplicates, or figure out the information to use as
a filter for ignoring one of the adapters.
2021-06-19 13:04:38 +12:00
Terry MacDonald
0808c6b1ba Added additional adapter output 2021-06-19 10:01:04 +12:00
Terry MacDonald
b1e9e6c295 [WIP] Added HDR functions to lib 2021-06-19 09:48:47 +12:00
Terry MacDonald
cf446101dd [WIP] Enough data for the Idenitifier
We now have enough data for me to identify
all the connected display devices, and to
generate a display identifier which will work
no matter if AMD Eyefinity is enabled or not!

This should allow me to generate an display
identifier that will work like the NVIDIA ones.
2021-06-18 21:31:55 +12:00
Terry MacDonald
3feef6f429 [WIP] Additional ADL2 conversions 2021-06-18 18:11:32 +12:00
Terry MacDonald
71550ba9a7 [WIP] Partial move to ADL2
Need to do this to gain access to extra
useful fields that just don't exist in ADL
functions. Example being HDR capabilties.
2021-06-18 18:02:14 +12:00
Terry MacDonald
6d64c1769a [WIP] Partial migration to ADL2
Its the only way to get HDR information :(
2021-06-18 12:33:46 +12:00
Terry MacDonald
3d0cf2542e [WIP] testing ways to get all displays
Trying different ways to get a list of all the connnected
displays via the AMD ADL library. It seems pretty
onerous at the moment, and seems like there is still a
lot of work to go :/. AGS may have been the better
way to go, but ADL at least had a C# example for me
to start with!
2021-06-17 21:40:10 +12:00
Terry MacDonald
854a359807 Fixed correct connector info 2021-06-17 20:10:14 +12:00
Terry MacDonald
b1b0ae26f5 Partially working displayids
It needs to be fixed as it isn't getting
the underlying displays when eyefinity
is turned on. Need to find a way around
that
2021-06-17 18:51:48 +12:00
Terry MacDonald
a39d9cbe01 [WIP] Working adapter and display grabbing
Need to add Display Device info extraction.
Have created consts for the connector types
in c#, but now need to add the logic to decode
the ADLDeviceConfig returned value!
2021-06-16 22:15:15 +12:00
Terry MacDonald
583fffb612 [WIP] Learning about PInvoke
This is a lot of learning about Pinvoke
and the way to marshal c structures
into c# managed structures when passed
as out.

This is all a lot more indepth than I was
hoping it was going to be!
2021-06-15 21:55:15 +12:00
Terry MacDonald
ee7c5fe1da [WIP] Building AMD library functions
There is a long road ahead of me, but
at least some of the structure is working
now! We can at least call the AMD ADL
library and get results returned back!
2021-06-14 21:42:16 +12:00
Terry MacDonald
a8c0307ace [WIP] Working basic adapter detection
Need to begin to put this in the right
places....
2021-06-14 20:37:35 +12:00
Terry MacDonald
f3acb9d292 [WIP] Seemingly basic connectivity working
So much left to do though!
2021-06-13 22:54:19 +12:00
Terry MacDonald
9c00081d7a Updated to v1.2.0 2021-06-13 09:52:30 +12:00
Terry MacDonald
668d01e8a6 [WIP] Partially extended AMD ADL lib 2021-06-13 09:44:36 +12:00
Terry MacDonald
77d67d7ef5 Merge branch 'main' into feature/amd-eyefinity-support 2021-06-10 19:28:24 +12:00
Terry MacDonald
d403f2d0ef Update to v1.1.4 2021-06-08 07:55:52 +12:00
Terry MacDonald
34e4833ba1 [WIP] partial pause 2021-06-08 07:21:36 +12:00
Terry MacDonald
cc1e9307cc [WIP] Added the multiple extern mappings
ADL2_Display_SLSMapConfig_SetState
ADL2_Display_SLSGrid_Caps
ADL2_Display_SLSMapIndexList_Get
ADL2_Display_SLSMapIndex_Get

Have to try and sort out the delegates and
the other bits to match the rest of the
AMD provided library entries.
2021-06-07 21:57:50 +12:00
Terry MacDonald
09e2b19bc3 [WIP] Added initial ADL2_Display_SLSMapConfig_Get()
Tried to add the first SLS map config get function into
the ADL.cs file, as well as all the supporting data
structures. Time will tell whether this will work or not!
2021-06-07 21:41:48 +12:00
Terry MacDonald
dbfaf1f7c8 Initial ADL library import
Using the example ADL.cs from
https://github.com/GPUOpen-LibrariesAndSDKs/display-library/tree/master/Sample-Managed
2021-06-07 17:55:44 +12:00
Terry MacDonald
63410627a6 Update version to v1.1.3 2021-06-07 11:05:29 +12:00
Terry MacDonald
0f294996c1 Refactored stopping start programs
Changed the process stopping logic
to make it more relable, and also make it
much more likely to actually stop the
programs even if they do things like
launch other programs and stop themselves

Added more helpful instructions

Added a link to the Example Start Programs
settings on the wiki by clicking on a button
in the ShortcutForm itself.

Added helpful MessageBox telling people
they need to select a Game Shortcut in order
to run, edit, delete or save it. Also included
text about the mouse right-click menu.

Clarified text on the StartProgramControl.
2021-06-03 21:04:40 +12:00
Terry MacDonald
09bedc9d3a Update version to v1.1.1
Also updating the homepage on
displaymagician.littlebitbig.com.
2021-05-23 10:32:26 +12:00
Terry MacDonald
6565e2f2cc Fixed error when removing unsaved startprograms
The startPrograms UI would error when someone tried
to remove an unsaved startprogram from the FLP.
This has now been resolved.

Also managed to update a warning in the logs when
a program starts and the original exe is a loader that
loads another exe then closes itself. I've provided that
warning in the log file now.
2021-05-21 14:41:49 +12:00
Terry MacDonald
d14ee49996 Update version to 1.1.0
Also fix a csproj error.
2021-05-20 21:21:13 +12:00
Terry MacDonald
0dc7c9c0d1 Fixing slight logic error during restructure
Managed to break some logic when trying to
add robustness.... effectively doing the
opposite of what I was trying to do :/. Now
*should* be fixed, but we shall see with more
testing.
2021-05-19 22:24:04 +12:00
Terry MacDonald
2096322cf0 Make EDID detection robust
Modified EDID detection to make it more
robust and to report what went wrong in
the logs in more detail. Aids in #16
2021-05-19 21:32:49 +12:00
Terry MacDonald
5bdb2adba8 Mostly working Game icons!
Well this took enough time! I have
almost corrected all the issues with
the icon parsing functions, but I still
have a couple of edge cases to fix.
2021-05-16 21:46:58 +12:00
Terry MacDonald
4ec7829a43 Made the shortcut images more reliable
Also added a ton of trace logging to be
able to fix issues remotely.
2021-05-02 22:05:25 +12:00
Terry MacDonald
43374ff1b2 Merged in hotfix for 1.0.6 2021-04-30 21:50:41 +12:00
Terry MacDonald
3ae712f578 Update version to v1.0.6 2021-04-30 21:25:34 +12:00
Terry MacDonald
6af0603d8f Fixed OriginLibrary issue
OriginLibrary wasn't added to the validity
checking, so no Origin games would work.
Also added a LOAD more trace logging with the
Origin library so I can see from the logs what's
happening. Also updated the version to 1.0.5.1.
And finally, removed unneeded validityrefresh
from the base ShortcutItem constructor as it
is refreshed later anyway. Should speed up
object creation a little.
2021-04-30 17:28:01 +12:00
Terry MacDonald
e9f401960e [WIP] Still moving to NHotkey 2021-04-28 22:14:54 +12:00
Terry MacDonald
209e3f0338 [WIP] Partway through swap to NHotkey
Also trying to port Willy-Kimura's HKL
HotkeySelector code over as well cause
it is ace!
2021-04-27 22:19:44 +12:00
Terry MacDonald
023a1a8862 [WIP] Shortcut and Profile hotkey UI
Completed the Shortcut and Display Profile
hotkey UI interface to a satisfactory level.
The hotkey settings are stored with the
profile JSON for profiles, and with the
shortcut JSON for shortcuts. This means
they load correctly and are remembered
between runs of DisplayMagician.

Next step is to actually register the Hotkeys
so they work, and then allow them to be
replaced or removed when they are changed.
2021-04-25 21:13:25 +12:00
Terry MacDonald
4ef1100ec2 Updated version to v1.0.5.0 2021-04-23 17:47:18 +12:00
Terry MacDonald
d57ad60121 Added robustness for video card errors
Added exception protection around the video
card identifier errors to at least allow
DisplayMagician to kind of keep working even
if there are errors in the NVIDIA drivers. This fix
was brought about to get around problems with
NVIDIA RTX 2080Ti cards when using NVIDIA
driver 466.11. This fix should allow users with
cards that report data incorrectly to recreate new
DisplayProfiles, and then change all their shortcuts
to use those new Display Profiles. DisplayMagician
should then start working again. Fixes #7.

NOTE: This problem is a workaround for a broken
NVIDIA driver. Once NVIDIA find out and fix it, then
you will need to recreate your Display Profile again
and change all your shortcuts to the new Display
Prrofile in order for your shortcuts to work again.
2021-04-21 22:14:30 +12:00
Terry MacDonald
0c4023fa64 Update to v1.0.4 2021-04-10 22:21:56 +12:00
Terry MacDonald
c799121a77 Testing WINAPI device recognition
Tests to make sure the WINAP display
detection and recognition are working
as expected. They tested fine.
2021-04-09 20:21:02 +12:00
Terry MacDonald
40dd147388 Fixed Display Driver change impacts
NVIDIA just updated their device driver, and
as part of those changes, it changed the name
that was reported by the NVIDIA driver. This
impacts our profile matching, as we previously
used the name that it returned in the fingerprint
we store about connected displays. This change
removes that name so that it will correctly match
on the old driver or the new driver.

NOTE: This requires recreating the profiles though!
2021-04-04 18:59:38 +12:00
Terry MacDonald
64871f3ddc Update to v1.0.3
Had to update the version so that the
new explorer reboot during setup upgrade
will work.
2021-03-28 22:32:48 +13:00
Terry MacDonald
44e7f0df38 Update toversion 1.0.2 2021-03-28 20:28:42 +13:00
Terry MacDonald
965f73377b Changed shortcut cancellation logic 2021-03-28 20:25:01 +13:00
Terry MacDonald
e913640751 Separated profile equals from possible
This change was to separate 'Equals'
(which checks for exactly the same) with
'Possible' (which checks that the connected
displays are available to use. Should make
the profile comparison a lot more accurate.
2021-03-27 16:15:17 +13:00
Terry MacDonald
846001548e Fixed Profile matching again
This time adjusted profile matching
so that it will work no matter what order
the displayidentifiers or paths are stored
in. Should be a bit slower but a lot more
reliable.
2021-03-26 23:55:35 +13:00
Terry MacDonald
1b6cc7967d Fixed Profile matching for Surround
Fixed the Profile.Equals logic so that it
could detect the difference between
Surround and non-Surround triple screen
configurations. Now seems to work fine.

Also adjusted the ProfileAdapter so that
the profile imagelistview works correctly.
Moved to using the UUID rather than the
name to allow users to change the name
without affecting the UUID. That was a
change I should have made AGES ago.
2021-03-26 22:57:05 +13:00
Terry MacDonald
11cd923e46 Changed profile matching logic
Relaxed the profile matching logic to
use my looser displayidentifier logic
as it is more likely that connections to
a display is changed rather thant the
display paths, resolution or anything like
that. Will use this as an experiment to
see if it works or not.

Also fixed the shortcut renaming errors
by searching for the UUID, not the shortcut
name which is the pretty much the way
I should have done it in the first place!
2021-03-26 21:54:45 +13:00
Terry MacDonald
795f006e2d Updating versions to 1.0.1 2021-03-17 20:13:06 +13:00
Terry MacDonald
f4c34f5cff Updated nuget packages 2021-03-12 10:09:35 +13:00
Terry MacDonald
75ac861ee7 Changed version to v1.0.0 2021-03-11 21:31:53 +13:00
Terry MacDonald
4531a0d4d5 [WIP] Partially working shortcut detection
Fixed the profile validitiy detection on load,
but now have issue with the shortcut detection
2021-03-07 17:11:46 +13:00
Terry MacDonald
1588cd6a0b Added Save to Desktop Profile Button
Added a button to save a profile shortcut
to the Windows desktop. This will enable
people to quickly change to another display
configuration if they want to using a desktop
display. This will work even if they are unable
to get admin rights to install the background
popup menu.
2021-03-07 14:50:52 +13:00
Terry MacDonald
07ceed3ec4 Make red error when sc profile gone
This will inform the user to choose another
profile when the profile is used in a shortcut
and yet the profile doesn't exist any longer
2021-03-06 17:43:07 +13:00
Terry MacDonald
34ae9069c7 Refactored tracking errors
Moved tracking profile errors into ProfileRepository
and moved shortcut errors into ShortcutRepository.
2021-03-05 14:44:53 +13:00
Terry MacDonald
001e351106 Fixing error loading games
It was erroring when loading games into
a blank shortcut screen. This was stopping
us being able to select any games at all.
Fixed another problem with Shortcut.IsValid
causing exception when loading a profle
that no longer existed. It now will correctly
report that the shortcut is isvalid.
2021-03-05 11:12:27 +13:00
Terry MacDonald
f22450b9a0 Fix profile selection issues
Fixed the profiles selection so it doesn't change
when you swap screens. Made the 'View
current display' button refresh the profile validity
too, so that a user now only has to change their
display settings in Windows and then swap back
DisplayMagician and click the View Current Display
button and the profiles will be updated.
2021-03-05 10:34:51 +13:00
Terry MacDonald
d6a5b752c9 [WIP] partial profiles ILV render creation 2021-02-28 21:34:59 +13:00
Terry MacDonald
f122719b80 Sped up profile possbility detection
Now caches the possbility detection for
profiles, so it only runs the expensive
detection logic when the UI changes.
2021-02-28 21:24:12 +13:00
Terry MacDonald
25df13e52a Library include cleanup 2021-02-21 20:23:41 +13:00
Terry MacDonald
bb37dc908a Changed LogLevel applies immediately
Configured NLog so that the loglevel
UI changes happen straight away. Also
am using NLog to generate the user
messages while it's running.
2021-02-20 22:03:19 +13:00
Terry MacDonald
6b02e2ccbe Added logging and improved readme
Added logging to ProfileRepository and
ShortcutRepository
2021-02-15 20:33:46 +13:00
Terry MacDonald
aece0cce29 Added extra debug logging 2021-02-14 22:42:48 +13:00
Terry MacDonald
dd8939b395 Logging changes
Combined DisplayMagicianShared logging into
the main log file to simplify log reporting for the
future. Also started adding info and debug
statements to the program to make the debug
level log work well for troubleshooting. This is
going to take a LONG time to complete, but will
be worth it in the end.
2021-02-10 22:40:22 +13:00
Terry MacDonald
a06651190d Upgrade nuget libraries
Upgrade CommanlineUtils, HTMLAgility
and other libraries. Leaving ValveKeyValue
as it requires some breaking changes.
2021-02-07 15:22:54 +13:00
Terry MacDonald
ba636414c0 Improve exception handling of existing ex
Added logger instances for DisplayMagicianShared
functions. Also added logger debug commands to
all exceptions with existing ex objects.
2021-02-07 14:42:17 +13:00
Terry MacDonald
0f38881709 More code analysis suppression 2021-01-28 22:20:00 +13:00
Terry MacDonald
88bd1a71fa Fixing some CodeAnalyzer suggestions 2021-01-28 22:03:02 +13:00
Terry MacDonald
6ab1e0842a Additional suppression messages 2021-01-28 21:34:45 +13:00
Terry MacDonald
3ecababc73 Suppressing CLS compliance errors
Some functions and procedures require CLS
non-compliance due to file formats and the like.
Suppressing these compiler warnings
2021-01-28 21:19:20 +13:00
Terry MacDonald
ed167459fa Fixed UplayGame monitoring
Also fixed errors caused by trying to access
32bit processes information from 64-bit
processes by using smoe cool code thanks
to Jeff Mercado and Mike Fuchs:
https://stackoverflow.com/questions/9501771/how-to-avoid-a-win32-exception-when-accessing-process-mainmodule-filename-in-c
2020-12-28 21:34:59 +13:00
Terry MacDonald
e4ed01f33b Added .Net 4.8 and Win 10 checks to installer 2020-12-21 15:02:06 +13:00
Terry MacDonald
9e1ef4a095 [WIP] First working WiX installer
Installer works, but there are a few issues with it.
- It doesn't register the DesktopBackground COM server
- It doesn't create a start menu shortcut with the AUMID
- It doesn't check for .Net Framework 4.8 or later
- It doesn't try to install .Net Framework 4.8 or later if not there
- It doesn't have any customised backgrounds...
- It doesn't ask to run DisplayMagician when install is finished
2020-12-20 20:42:04 +13:00
Terry MacDonald
41fd798a07 Renamed projects to work with WiX file harvesting 2020-12-20 15:50:32 +13:00