There is at least few places in underlying C libraries where behavior is
dependent on vfunc definition. E.g. in GstBaseTransform class, if transform
or transform_ip vfunc is not defined, then plugin is set to passthrough
mode. In C++ wrapper, you need to manually set this flags. Unfortunately, I
didn't come up with any good idea.

2016-03-21 10:13 GMT+01:00 Kjell Ahlstedt <kjell.ahlst...@bredband.net>:

> Haven't you mixed up signals and vfuncs? show and hide are signals.
> show_all, hide_all, map and allocate are vfuncs.
>
> I'm not sure if the test for clutter_actor_real_allocate in
> clutter_actor_maybe_layout_children() can be problematic. It shouldn't be,
> when the vfunc is called. If it's not overridden by the user of cluttermm,
> the parent class version (i.e. the C code version) will be called, and the
> C code should find that klass->allocate == clutter_actor_real_allocate. But
> I see in the clutter code that clutter_actor_maybe_layout_children() is
> also called from clutter_actor_set_allocation(). Perhaps that call does not
> work as expected unless the CLUTTER_DELEGATE_LAYOUT flag is set.
>
> Kjell
>
>
> Den 2016-03-21 kl. 03:30, skrev Ian Martin:
>
>> Hi,
>> I'm slowly working my way through clutter trying to wrap it.  I've come
>> up against a recurring problem where the C functions work but the wrapped
>> functions don't; looking at the clutter source, I think the problem might
>> be that the vfuncs are listed in the class_init function with a _real_
>> qualifier:
>>  klass->show = clutter_actor_real_show;
>>   klass->show_all = clutter_actor_show;
>>   klass->hide = clutter_actor_real_hide;
>>   klass->hide_all = clutter_actor_hide;
>>   klass->map = clutter_actor_real_map;
>>
>> etc, and then in the source files this sort of thing happens:
>>
>>   if (CLUTTER_ACTOR_GET_CLASS (self)->allocate ==
>> clutter_actor_real_allocate)
>>     goto check_layout;
>>
>> which would mean that if every C++ instance is derived, it won't call the
>> base class function; if possible, I should be pointing the vfuncs to the
>> _real_ method, but as they're not declared in the headers this won't work
>> either.
>>
>> Is that correct?  Is there an example in another wrapped library of this
>> being done successfully?
>>
>> Ian.
>>
>
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtkmm-list
>



-- 
Pozdrawiam
Marcin Kolny
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to