Please package gsequencer-v2.1.64

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Please package gsequencer-v2.1.64

Joël Krähemann-2
Hi,

Please package latest upstream package of GSequencer, before the
dead-line of freeze to enter testing is over.

https://release.debian.org/buster/freeze_policy.html

The latest changes since 2.1.53 which is in testing, include some
bug-fixes and improved reference counters.

There was a problem as described here:

https://savannah.nongnu.org/forum/forum.php?forum_id=9365

However, it is fixed in v2.1.53 but the API isn't unified in view of
these changes. You should consider update to latest upstream version.

The following functions increase the reference counter, now. This is
necessary because there is no GList representation of the nested tree
described by AgsChannel and AgsRecycling:

* ags_channel_next()
* ags_channel_prev()
* ags_channel_next_pad()
* ags_channel_prev_pad()
* ags_channel_first()
* ags_channel_last()
* ags_channel_nth()
* ags_channel_pad_first()
* ags_channel_pad_last()
* ags_channel_pad_nth()
* ags_channel_first_with_recycling()
* ags_channel_last_with_recycling()
* ags_channel_prev_with_recycling()
* ags_channel_next_with_recycling()
* ags_channel_get_link()
* ags_recycling_next()
* ags_recycling_prev()
* ags_audio_signal_get_template()
* ags_audio_signal_get_rt_template()
* ags_recall_get_by_effect()

On the other side the find functions expect to obtain a valid
referenced GList of objects:

* ags_recall_find_type()
* ags_recall_find_template()
* ags_recall_template_find_type()
* ags_recall_template_find_all_type()
* ags_recall_find_type_with_recycling_context()
* ags_recall_find_recycling_context()
* ags_recall_find_provider()
* ags_recall_template_find_provider()
* ags_recall_find_provider_with_recycling_context()
* ...


Best regards,
Joël

Reply | Threaded
Open this post in threaded view
|

RE: Please package gsequencer-v2.1.64

Joël Krähemann-2
Hi all,

The OSC server has definitely a need for the changes introduced in
version 2.1.61. Since it runs decoupled from the audio threads, it is
not conflict free. In order to run race aware it needs safe iteration
of AgsChannel.

As you might change channel alignment from UI and modify or monitor
the affected audio object, it may SIGSEGV in version 2.1.53.

Here is another change, it fixes a memory leak that happens as running
the different stages of playback - version 2.1.61:

* fixed memory-leak in ags_channel_recursive_setup_run_stage_down()

In version 2.1.54 a wrong property specification was fixed:

* fixed AgsThread:max-precision property specification

As you might have noticed most of the changes are related to reference
counter. I decided to introduce 6 new functions as fixing the above
described problem with the OSC server.

* implemented ags_channel_next() and ags_channel_prev()
* implemented ags_channel_next_pad() and ags_channel_prev_pad()
* implemented ags_recycling_next() and ags_recycling_prev()

Then I started to replace iterating AgsChannel instead by property
AgsChannel::next with the above functions.

I prefer the iteration functions over g_object_get() because they have
always well defined behavior. On the opposite, when you pass NULL to
g_object_get() it won't write to any return location specified by
parameters.

best regards,
Joël