I think that GLib.Global.ProgramName has to be set to a value.I am not sure what will happen when it is not set. In case args == null and we should set GLib.Global.ProgramName to a static value like this.
var args = Environment.GetCommandLineArgs (); if (args != null && args.Length > 0){ GLib.Global.ProgramName = System.IO.Path.GetFileNameWithoutExtension (args [0]); }else { GLib.Global.ProgramName = "EmbeddedMono"; } 2013/11/3 "Andrés G. Aragoneses" <kno...@gmail.com> > On 03/11/13 15:58, Vardar Sahin wrote: > >> Environment.GetCommandLineArgs is an internal call and my assumption was >> that the internal call is not registered to a C function. But now I see >> that I can call Environment.GetCommandLineArgs. >> I checked it out and Environment.GetCommandLineArgs returns null if you >> embed mono into your application. >> >> So you have to check for a null reference. >> > > Ok thanks, I updated the pull request adding a null check > > > > And and maybe you have to set >> GLib.Global.ProgramName to static name in case. >> > > What do you mean? GLib.Global.ProgramName is already static. > > Thanks > > > >> >> 2013/11/2 "Andrés G. Aragoneses" <kno...@gmail.com >> <mailto:kno...@gmail.com>> >> >> >> Being not registered means that accessing GetCommandLineArgs throws >> an exception? If yes, what kind? >> >> >> On 02/11/13 22:10, Vardar Sahin wrote: >> >> Hey Andrés, >> >> thanks for the quick replay. I am not sure if this will fix the >> problem. >> I think the problem is that you can not call >> Environment.__GetCommandLineArgs() when you embed mono. >> Environment.__GetCommandLineArgs() is an internal call and it >> >> seems like >> it is not registered when you embed mono. >> >> Best >> Sahin >> >> >> >> >> 2013/11/2 "Andrés G. Aragoneses" <kno...@gmail.com >> <mailto:kno...@gmail.com> >> <mailto:kno...@gmail.com <mailto:kno...@gmail.com>>> >> >> >> >> On 02/11/13 21:42, Vardar Sahin wrote: >> >> Hey monodev fellows, >> >> first of all I appreciate all your hard work and want to >> contribute this >> to the mono project. >> >> Right now it is not possible to use GTK# with an >> application which >> embeds mono. GTK# works just fine if you use mono as a >> standalone >> application eg mono.exe. >> >> The reason why GTK# does not works when you embed mono >> is as >> fallowing. >> >> Each GTK# Application has to call Application.Init(). >> >> This functions is like this. >> >> public static void Init () >> { >> SetPrgname (); >> IntPtr argv = new IntPtr(0); >> int argc = 0; >> >> gtk_init (ref argc, ref argv); >> >> SynchronizationContext.____SetSynchronizationContext >> (new >> GLib.____GLibSynchronizationContext ());} >> >> >> >> Init will fail on SetPrgname (); when mono is embedded >> in an >> application. >> >> static void SetPrgname () >> { >> GLib.Global.ProgramName = >> System.IO.Path.____GetFileNameWithoutExtension >> (Environment.____GetCommandLineArgs () [0]); >> >> >> } >> >> When embedding Mono, Environment.GetCommandLineArgs () >> will fail >> because >> it is not set to anything. When you run the same on >> mono as a >> standalone >> application it will work because mono will pass the >> command line >> argument via Environment.____GetCommandLineArgs(). >> >> >> >> I fixed it by registering the internal call for >> Environment.GetCommandLineArgs to my own fucntion and >> return just a >> dummy string. >> >> My suggestion would be to do the same in mono when you >> embed it >> or to >> change SetPrgname to not relay on >> Environment.GetCommandLineArgs (). >> >> >> Sahin, wouldn't this also fix your use case? >> >> https://github.com/mono/gtk-____sharp/pull/90/files >> <https://github.com/mono/gtk-__sharp/pull/90/files> >> >> <https://github.com/mono/gtk-__sharp/pull/90/files >> <https://github.com/mono/gtk-sharp/pull/90/files>> >> >> >> Thanks >> >> >> ___________________________________________________ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.____com >> <mailto:Mono-devel-list@lists.__ximian.com >> <mailto:Mono-devel-list@lists.ximian.com>> >> http://lists.ximian.com/____mailman/listinfo/mono-devel-____list >> <http://lists.ximian.com/__mailman/listinfo/mono-devel-__list> >> >> <http://lists.ximian.com/__mailman/listinfo/mono-devel-__list >> <http://lists.ximian.com/mailman/listinfo/mono-devel-list>> >> >> >> >> >> >> >> _________________________________________________ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.__com >> <mailto:Mono-devel-list@lists.ximian.com> >> http://lists.ximian.com/__mailman/listinfo/mono-devel-__list >> <http://lists.ximian.com/mailman/listinfo/mono-devel-list> >> >> >> >> _________________________________________________ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.__com >> <mailto:Mono-devel-list@lists.ximian.com> >> http://lists.ximian.com/__mailman/listinfo/mono-devel-__list >> <http://lists.ximian.com/mailman/listinfo/mono-devel-list> >> >> >> >> >> _______________________________________________ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> >> > > _______________________________________________ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list >
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list