Fix a crash in funcsig_hash

Ryan Gammon rgammon at real.com
Thu Jun 16 13:57:05 PDT 2005


Colin Walters wrote:

>The custom marshallers stuff needs more testing though; it needs
>work/testing along with the rest of the signals stuff.
>  
>

Yup, no worries.

I'm working on something we're calling universal media engine support 
for helix player 2.0 -- the ability to support multiple media engine 
"backends".

One can have either out-of-process backends via dbus, or in-process 
backends.
An out of process backend is cool for a bunch of reasons, including:
- musep-style isolation of the media engine
- using multiple engines at runtime

An in-process backend is cool because:
- not all methods on all backends are suitable for dbusification
- the hx_player_get_unknown COM access stuff in particular as something 
we don't want to let go of just yet.
- there may be other reasons for in-process media engines down the road.

To this end, I've taken our helix gobject & factored out a GInterface, 
and created a second dbus-driven gobject that implements this interface. 
The dbus gobject is basically a bunch of dbus_g_proxy_begin_call / 
dbus_g_proxy_end_call's.

There are a couple of things that are minorly gross in what I have right 
now:

- My GInterface for in- and out-of-process media engines defines several 
signals. AFAICS, I can't get dbus to automagically emit these signals, 
so I have a bunch of dbus_g_proxy_connect_signal handlers that re-emit 
signals on the GInterface using g_signal_emit_by_name

- Ideally I'd like to have an out-of-process helix backend as well -- 
we'll use helix in process in hxplay, but maybe others will want to use 
an out-of-process helix. I want to reuse my in-process helix gobject, as 
it already implements a GInterface identical to my dbus api.

The difficulty is that when I generate the glue for my dbus server, it's 
set up such that the methods all return a bool and take their in/out 
parameters in the function parameter list, whereas my GInterface has 
many methods that return one out argument that is not a bool, and take 
assorted in arguments.

Thus, I have a shim that goes from dbus calling conventions to my 
GInterface api. Not a big deal, but I thought I'd bring it up in case 
there's some annotation I can make to out parameters that would make 
them show up as return values.

I'm also trying to figure out glib signal introspection, 
org.gtk.objects, and how this is going to look if I'm working with 
something like the qt bindings -- ideally I can do the signals for my 
media engine "servers" in such a way that they're also easy to use & 
native feeling for the kde/python/mono folk. No intelligent question 
here yet :)

I hope to have this stuff going into the public cvs & nightly builds in 
some form next week (built against 0.34 linked statically into the 
binary under the terms of the AFL, with the long term plan being to 
dynamically link against dbus on builds that ship with distributions).

Feedback always appreciated, here or on player-dev at helixcommunity.org, 
particularly if there's anything I've described here that is grossly 
wrong :)

-- 
Ryan Gammon
rgammon at real.com
Developer for Helix Player
https://player.helixcommunity.org



More information about the dbus mailing list