intvsteve / VINTage

Various Intellivision-related projects, including the LTO Flash! User Interface application.
GNU General Public License v2.0
3 stars 1 forks source link

Remove gconf - and other changes #327

Closed intvsteve closed 5 years ago

intvsteve commented 5 years ago

This pull is primarily concerned with removing the use of GConf from the GTK build. It is replaced by using the [DataContract] attribute and attendant serializer / deserializer for the various Settings implementations.

In addition, some settings are now identified as "application" settings. Application settings are stored in a separate file.

XDG support was also added in this effort to put settings in a proper location.

During this, some other light cleanup was done - specifically separating the implementation of IApplicationInfo out of the INTV.LtoFlash assembly and putting into the application proper. This was long overdue, as it utterly violated the notion of what part of the code identified the application - which must be separate from the plugins that it collects.

In turn, this removed IApplicationInfo from composition - it is provided directly to the application via the RunApplication() method. And of course, being on three platforms, in which application initialization operates in utterly different ways, doing this broke the Mac initialization.

Mac exposed two issues. The OSVersion static initialization needs to be Lazy - you can't make calls to Foundation prior to entering a run loop, apparently. Also, access to IApplicationInfo happens before the application instance global has been established in the guts of Cocoa, apparently - so the value became a static on SingleInstanceApplication.