[Mono-dev] Fix for using GTK# in mono embedded application

Vardar Sahin sakirsoft at gmail.com
Sat Nov 2 21:10:32 UTC 2013


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" <knocte at 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
>
>
> Thanks
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20131102/5cfd9d2f/attachment.html>


More information about the Mono-devel-list mailing list