[Mono-winforms-list] Windows Forms on Mac OS X

Erik Renes keenriser at planet.nl
Wed Jan 9 14:15:42 EST 2008


Thanks for the reply, I have used the QUARTZ and CARBON backends, and indeed
the X11 issues do not occur anymore. Unfortunately, I don't think the
current implementation is stable enough for my needs. Specifically, my
application uses some DataGrids that are bound to a dataset that has two
tables with foreign key constraints between them. Maybe 1.2.7 will bring us
more stability, but I think it would be the wisest for me on the short term
to look at alternatives like cocoa-sharp.

 

Thanks for the help,

Erik Renes

 

From: Geoff Norton [mailto:gnorton at novell.com] 
Sent: woensdag 9 januari 2008 16:32
To: Erik Renes
Cc: mono-winforms-list at lists.ximian.com
Subject: Re: [Mono-winforms-list] Windows Forms on Mac OS X

 

Dont use the X11 driver.

 

export MONO_MWF_USE_QUARTZ_BACKEND=1

export MONO_MWF_USE_CARBON_BACKEND=1

 

-g

 

On 9-Jan-08, at 7:34 AM, Erik Renes wrote:





Hi Everyone,
A short status update ...

Meanwhile I have succesfully installed cairo using macports, then I have
dllmapped the libcairo to the one installed by macports by editing the
config file in the Mono.Framework etc/ directory:
<dllmap dll="libcairo-2.dll" target="/opt/local/lib/libcairo.dylib"
os="osx"/>

This caused the windows forms application to work, however, only in the
second instance of X11. Let me elaborate:
First I start my test.exe using 'mono test.exe', then X11 pops up in the
dock and does not do anything. If I quit the running X11 instance (right
click on X in the dock and click Quit) it immediately comes back after
closing down. Directly after, the messagebox is being shown as expected.

I can now run Windows Forms apps normally, however if I close this second
instance of X11, I have to repeat the procedure to get it working again.
Now for development this is not so much of an issue, but runtime deployment
I don't think any user would want to do this just to run one app.

Does anyone have any suggestions that I can try to make it work as intended?
(or is this intended?) I have read something about a native driver for
winforms, is it enabled by default in Mono 1.2.6 on Mac OS X? If not, maybe
this is something for me to try out, if anyone could tell me how to enable
it?

Best Regards,
Erik Renes

 

On Jan 9, 2008, at 9:41 AM, Erik Renes wrote:





<test.cs>

Hi All,

I am currently trying to get a windows forms application to run on Mac OS X
10.5.1 (clean Mac OS X install, clean Mono install with the Mac OS X package
from the website), however, it seems that there is something wrong with my
setup. I have created a test application that does nothing but show a
messagebox (attached: test.cs).

The moment I do anything with windows forms, my application hangs.
I have used the --trace mono option to check where it goes wrong, the
following happens the first time I run the application:

. . . . . . . . . . . . . . . . . . . ENTER:
System.Windows.Forms.XplatUIX11:.ctor
()(this:0x1d31050[System.Windows.Forms.XplatUIX11 test.exe], )
. . . . . . . . . . . . . . . . . . . . ENTER:
System.Windows.Forms.XplatUIDriver:.ctor
()(this:0x1d31050[System.Windows.Forms.XplatUIX11 test.exe], )
. . . . . . . . . . . . . . . . . . . . LEAVE:
System.Windows.Forms.XplatUIDriver:.ctor ()

[ ... lots of initialization ... ]
. . . . . . . . . . . . . . . . . . . . . ENTER: (wrapper managed-to-native)
System.Windows.Forms.XplatUIX11:XInitThreads ()()
. . . . . . . . . . . . . . . . . . . . . LEAVE: (wrapper managed-to-native)
System.Windows.Forms.XplatUIX11:XInitThreads ()result=1
. . . . . . . . . . . . . . . . . . . . . ENTER: (wrapper managed-to-native)
System.Windows.Forms.XplatUIX11:XOpenDisplay (intptr)(0x0, )

After the XOpenDisplay, my application does not proceed.
Then I try to run it again (the previous application is closed, but X11 is
still running) and get the following hang:

ENTER: System.Environment:GetEnvironmentVariable
(string)([STRING:0x1822aa0:MONO_GDIP_USE_COCOA_BACKEND], )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ENTER:
(wrapper managed-to-native)
System.Security.SecurityManager:get_SecurityEnabled ()()
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEAVE:
(wrapper managed-to-native)
System.Security.SecurityManager:get_SecurityEnabled ()FALSE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ENTER:
(wrapper managed-to-native)
System.Environment:internalGetEnvironmentVariable
(string)([STRING:0x1822aa0:MONO_GDIP_USE_COCOA_BACKEND], )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEAVE:
(wrapper managed-to-native)
System.Environment:internalGetEnvironmentVariable (string)[STRING:null],
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEAVE:
System.Environment:GetEnvironmentVariable (string)[STRING:null],
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ENTER:
System.Environment:get_OSVersion ()()
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEAVE:
System.Environment:get_OSVersion ()[System.OperatingSystem:0x1d2bf00]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ENTER:
System.Drawing.GdiplusStartupInput:MakeGdiplusStartupInput
()(VALUERET:0xbfffe1b4, )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEAVE:
System.Drawing.GdiplusStartupInput:MakeGdiplusStartupInput
()[01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ENTER:
System.Drawing.GdiplusStartupOutput:MakeGdiplusStartupOutput
()(VALUERET:0xbfffe19c, )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LEAVE:
System.Drawing.GdiplusStartupOutput:MakeGdiplusStartupOutput
()[00,00,00,00,00,00,00,00,]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ENTER:
(wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup
(ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOut
put&)([BYREF:0x8fafa4], [BYREF:0xbfffe1a4], [BYREF:0xbfffe194], )

It seems that the initialization of GDIPlus does not complete succesfully.

I have found threads on the OS X list suggesting that I should use a dll map
to tell mono where my X11 is resided, however, this is already installed by
default with the mono OS X package. What I think might be the problem - I'm
not sure - is that I don't have Cairo installed. If this is indeed a
problem, can anyone suggest a way to install this and make mono aware of it?

I would be happy to receive any suggestions on how to troubleshoot this
issue, as I have never used a mac for development before.

Best Regards,
Erik Renes_______________________________________________
Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

 

_______________________________________________
Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20080109/7362a6d2/attachment-0001.html 


More information about the Mono-winforms-list mailing list