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.
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!
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!
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!
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!
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.
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!
DisplayMagician can now handle it if a gamelibrary
is removed, or if you use a shortcut config file from
later version of DisplayMagician with an earlier version
of the DisplayMagician application. It will simply ignore
the incompatible shortcut, and it won't be able to be
edited or used.
This fixes the stupid '"Pass arguments to Program"
not retaining checkbox check bug' error that some
how passed my testing! Fixes#19.
Really sorry to everyone for missing this as I really
did do some extensive testing (or so I thought) but
it looks like I'll need to do another release!
Added initial GOG library support.
Also refactored the GameLibraries so that
they also start the game themselves, as
each library is different in how it starts the
game. This is the simplest way to handle that.
Added Epic game library support based
on the awesome work by Josef Nemec in
his software Playnite. I just transposed his
hard work into DisplayMagician and made
it all work! Thanks to Josef!
Also fixed up some little bugs in the way the
derived Game classes work with the base class
for some of the propoerties. Now fixed.
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.
Any start program that is started then
tries to doubly make sure that the program
is also closed. Now checks for something to
close in the following order:
- tries to close the process it opened
- if that was closed it tries to find any child
processes started by the original process in
case it was a 'launcher' process
- If there are no children with the same parent
process then it just tries to close all processes
with the same name as the one it opened.
That final close also is a forced kill, as I've found
programs like SimHub resist closing....