[Gambas-devel] Windows stuff

Brandon Bergren bdragon at ...185...
Fri Mar 11 02:25:35 CET 2005


On Thu, 10 Mar 2005, Brandon Bergren wrote:

>
>
> On Thu, 10 Mar 2005, Rob wrote:
>
>> On Thursday 10 March 2005 18:43, Brandon Bergren wrote:
>>> I managed to get a dll to provide GDI windowing in Cygwin, finally.
>> [...]
>>> Anyway, if everything goes well, I might be able to get the GTK
>>> component to compile against a MINGW style GTK.
>> 
>> What I'm getting from this is that you may be close to getting
>> gambas-cygwin working against gtk-win32 via some presumably twisted
>> IPC.  I didn't know you could even do that :)  What are the benefits
>> over, say, displaying on cygwin's X server in seamless mode?
>>

No, not twisted IPC, twisted run-time-library-loading. It isn't simple 
like it is on Linux.

The benefit is that it is about 200x faster to do GDI native versus X on 
windows.

Actually, it worked ok without using most of the tricks I was thinking 
about. GTK apparently was able to fudge its own handle.

>> Rob
>> 
>
> Heh heh, closer than even I thought.
>
> OMG IT FRICKING WORKS!!!
>
> gb.gtk win32 NATIVE is WORKING!!!
>
sorry, got really excited. ;P

> (more in a few minutes, still recovering from just watching everything come 
> together in one moment)
>
> --Brandon

Ok, here's my followup.

I just got the gob of gb.gtk code to compile in dev-cpp. -- I.E. 
completely native. The DLL doesn't link against anything but windows libs.

The only stuff currently disabled is:

Plugin stuff -- There isn't glue code in gtk for windows. Should be easy, 
probabaly possible to make a single file glue to drop in that doesn't 
require a gtk recompile.  Really, since windows isn't picky about security 
like X, making most of the Plugin/Socket stuff nullop should just work(tm)

TrayIcon -- Platform dependent crap. Daniel: Would you accept windows 
patches? :)

CWatcher -- I had to remove the filewatcher hook.  Watching file 
descriptors on Windows is DIFFERENT. Daniel: Why do you need to override 
the default watch hook?

and the event loop doesn't have a sleep in it. (but it still doesn't 
take a bunch of CPU time... I don't know why...)

I tested the Notepad example so far. It crashes when you save, but the 
rest seems to work OK.

Here's the console output, if anyone can tell me what is happening here, 
I'd like to know.

DataObject Shell IDList Array Preferred DropEffect Shell Object Offsets 
FileName FileNameW Ole Private Data
(gbx2): GLib-CRITICAL **: g_convert: assertion `str != NULL' failed
FNotepad.?.0: #43: Access forbidden
WARNING: circular references detected
FNotepad (1)
WARNING: CCONTAINER_width not yet implemented
WARNING: CCONTAINER_height not yet implemented
WARNING: gButton::setCancel() not yet implemented

Of course, it's probabaly having something to do with one of the bits that 
doesn't work properly.

I also had to stub two unimplemented functions (Daniel, why isn't this a 
compile error for you?)


Well, that's about it, screenshots will follow soon.

--Brandon




More information about the Devel mailing list