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....
This fixes an edge case where a start program
is already running and DM would skip starting
any additional start programs. Fixes#18.
Also fixed an issue with it trying to stop start
programs processes that were already stopped
by the user or by some other process. It now
logs the fact this wasn't done as it was already
closed.
Fixed the Game Shortcut hotkeys so that
they work properly. Some late code changes
yesterday broke them :(. Sorry for the
inconvenience!
Also stopped the annoying 'bing' everytime
the notification toasts were created by
DisplayMagician when it did things. They are
now silent except for the ones that actually
require your attention, which should stop it
all being quite so jarring.