Hi. I'm the project leader for CinePaint, an open source paint program used mainly by the motion picture industry. Our code was branched from GIMP in 1998. How would the Dillo project feel about Dillo being embedded in another application as a help browser? We're looking for a new help system browser and considering Dillo. We are impressed how compact your implementation is. We only need a limited set of HTML features: links, images, tables, bullet lists, number lists, headings, ordinary text, bold, and italic. In these features we need the browser to be absolutely stable. Any issues there? We support all platforms, including Windows. One of the first things I would intend to do is port Dillo to Windows. I saw in your archives that you had made some effort in that direction, but it seemed to peter out. What are the problems? Thanks! Robin --------------------------------------------------------------------------- Robin.Rowe@MovieEditor.com Hollywood, California www.CinePaint.org Free motion picture and still image editing software
On Tue, 26 Aug 2003, Robin Rowe wrote:
Hi. I'm the project leader for CinePaint, an open source paint program used mainly by the motion picture industry. Our code was branched from GIMP in 1998.
Hi! Yes, I knew about your project by the time we were applying to LinuxFund...
How would the Dillo project feel about Dillo being embedded in another application as a help browser?
Very good. In fact it has been done in the past with the Sylpheed-claws email client: it embeds dillo for secure HTML mail viewing. In fact we're working in a remote control plugin for dillo to allow better support for this kind of functionality. Currently applications can launch Dillo and let the user navigate the help docs without problems. Now, if the app. wants to provide context sensitive help, it needs to end dillo and launch another instance to make it display the required page (quite fast, but not optimal), and here's where we're improving it.
We're looking for a new help system browser and considering Dillo. We are impressed how compact your implementation is. We only need a limited set of HTML features: links, images, tables, bullet lists, number lists, headings, ordinary text, bold, and italic. In these features we need the browser to be absolutely stable. Any issues there?
None! You'll hardly find a browser that's more stable. And for any issue that may arise, you can email us back for support.
We support all platforms, including Windows. One of the first things I would intend to do is port Dillo to Windows. I saw in your archives that you had made some effort in that direction, but it seemed to peter out. What are the problems?
If you need dillo to run on the dark side, take a look at: http://www.hyperborea.org/software/dillo/cygwin.html Cheers Jorge.-
Jorge, I have Dillo built now as a native Windows VC++ 6 project and am debugging it. Seems to be my unstable 1.14 version of GTK for Windows that is causing Dillo to hang on load. By the way, I'm the new GTK1 for Windows maintainer. Tor and GIMP for Windows are moving to GTK2, but CinePaint is staying with GTK1. Can we talk about Dillo design portability a bit? Dillo uses pthreads and fork. Wouldn't it be better to use one multi-process API? Shouldn't it be all pthreads? Of course, there is no fork under Windows. There isn't any pthreads either, but I've written a light emulation library (as yet untested) that calls Windows threads instead. You are using mutex and conditional pthreads together, which seems redundant. Are both needed? Could you use just a mutex? What is that code supposed to do and why? Another call unavailable in Windows is fcntl(). I've conditionally compiled those out, and don't know yet what that may effect. Although Berkeley sockets are available in Windows, the AF_LOCAL protocol doesn't seem to be. I've faked that out to get Dillo to compile but more work may be needed there. Why are you using AF_LOCAL? What does that code do and why? Can you tell me about your internationalization support in Dillo? How is that set up? What is it designed to handle? Thanks, Robin --------------------------------------------------------------------------- Robin.Rowe@MovieEditor.com Hollywood, California www.CinePaint.org Free motion picture and still image editing software
Hi. The IO_submit code isn't portable to Windows. Unlike unix, Windows offers only blocking io on pipes. The usual way to deal with this is to spin off read or write into another thread where it can block without hanging the program. Your io scheme is complicated enough that it isn't immediately obvious how best to do that. Can somebody offer more insight into the code below or offer any suggestions? How long does an IO_submit operation stay open and what data is transmitted normally? What dialog is expected across the pipe? Thanks, Robin /* * Receive an IO request (IORead | IOWrite | IOWrites), * Set the GIOChannel and let it flow! */ static void IO_submit(IOData_t *r_io) { /* Insert this IO in ValidIOs */ IO_ins(r_io); #ifdef WIN32 /* Launch thread? */ #else /* Set FD to background and to close on exec. */ fcntl(r_io->FD, F_SETFL, O_NONBLOCK | fcntl(r_io->FD, F_GETFL)); fcntl(r_io->FD, F_SETFD, FD_CLOEXEC | fcntl(r_io->FD, F_GETFD)); #endif if ( r_io->Op == IORead ) { g_io_add_watch(r_io->GioCh, G_IO_IN | G_IO_ERR | G_IO_HUP, IO_callback, GINT_TO_POINTER (r_io->Key)); g_io_channel_unref(r_io->GioCh); } else if ( r_io->Op == IOWrite || r_io->Op == IOWrites ) { g_io_add_watch(r_io->GioCh, G_IO_OUT | G_IO_ERR, IO_callback, GINT_TO_POINTER (r_io->Key)); g_io_channel_unref(r_io->GioCh); } } --------------------------------------------------------------------------- Robin.Rowe@MovieEditor.com Hollywood, California www.CinePaint.org Free motion picture and still image editing software
On Thu, 28 Aug 2003, Robin Rowe wrote:
Hi. The IO_submit code isn't portable to Windows. Unlike unix, Windows offers only blocking io on pipes. The usual way to deal with this is to spin off read or write into another thread where it can block without hanging the program. Your io scheme is complicated enough that it isn't immediately obvious how best to do that.
Can somebody offer more insight into the code below or offer any suggestions? How long does an IO_submit operation stay open and what data is transmitted normally? What dialog is expected across the pipe?
Use two connected sockets instead of the pipe. You can create such pair for example by listening random port (bind to port 0) and connecting to address found out using getsockname.
Hi, although I'm not a main developer, I think I can answer a bit.
I have Dillo built now as a native Windows VC++ 6 project and am debugging it.
cool !
Dillo uses pthreads and fork. Wouldn't it be better to use one multi-process API? Shouldn't it be all pthreads? Of course, there is no fork under
In the current CVS version I only found one reference to fork and it was to start a plugin. Currently, this is no longer used and is dead code. However, some way of starting the dpid automatically will most likely return - for the current CVS version this dpid has to be started manually. But either way, the plugins and the dpid are totally seperate programs. dpid is designed to only be started once. This functionality should be reproducable in Windows, I'd say :-) The other fork's are within the plugin framework when the dpid actually starts the requested plugin. You probably can delay that framework. Dillo will still work - with limited functionality.
Although Berkeley sockets are available in Windows, the AF_LOCAL protocol doesn't seem to be. I've faked that out to get Dillo to compile but more work may be needed there. Why are you using AF_LOCAL? What does that code do and why?
It's again related to plugins :-) ... dillo talks to its plugins via unix domain sockets. And that's what this code relates to. If you only need a help browser, you can ignore the plugin framework I would say. That way you will get no bookmarks, though. And the preferences are also planned to be done via a plugin. Or at least delay the plugin stuff until it matured. That's the cool part about the plugin design :-) I hope that helps, Cheers Andreas -- **************************** NEW ADDRESS ****************************** Hamburger Sternwarte Universitaet Hamburg Gojenbergsweg 112 Tel. ++49 40 42891 4016 D-21029 Hamburg, Germany Fax. ++49 40 42891 4198
participants (4)
-
Andreas Schweitzer
-
Jorge Arellano Cid
-
Madis Janson
-
Robin Rowe