newsAdvanced Gtk+ Sequencer - News: GSequencer v3.0.0 planned release date 2020-05-07

 
 
Latest News
Advanced Gtk+ Sequencer version 6.8.x posted by jkraehemann, Wed 17 Apr 2024 01:40:23 PM UTC
Advanced Gtk+ Sequencer version 6.5.x posted by jkraehemann, Sun 11 Feb 2024 05:06:15 PM UTC
Advanced Gtk+ Sequencer version 6.3.5 posted by jkraehemann, Fri 19 Jan 2024 11:53:24 AM UTC
Advanced Gtk+ Sequencer v6.1.0 released posted by jkraehemann, Thu 28 Sep 2023 04:55:19 AM UTC
Advanced Gtk+ Sequencer v6.0.0 released posted by jkraehemann, Mon 21 Aug 2023 11:48:52 AM UTC

GSequencer v3.0.0 planned release date 2020-05-07

Item posted by Joël Krähemann <jkraehemann> on Wed 20 Nov 2019 08:15:08 AM UTC.

The development on GSequencer v3.0.0 is on-going. The last 2 weeks I just spent with refactoring Advanced Gtk+ Sequencer's threading API.

Abandon POSIX thread API in favor of GThread and related


Wow, this were many mutices that had to be replaced. The common object field obj_mutex is now of type GRecMutex. There are usually macros to access the object's mutex. Like:


GRecMutex *thread_mutex;

thread_mutex = AGS_THREAD_GET_OBJ_MUTEX(thread);

g_rec_mutex_lock(thread_mutex);

...

g_rec_mutex_unlock(thread_mutex);


Anyway, most of the time you should rather use accession functions or g_object_get() and g_object_set().

Refactored AgsThread


The AgsThread object resides as of 3.0.0 in ags/thread/ags_thread.[ch] and its synchronization work has been rewritten.

I have dropped the support for many exotic functions, like lock/unlock or wait for the tree. Further the suspend/resume, interrupt and monitor functions are removed.

No more nested functions in ags/thread/ags_thread.c.

Further you should make use of the tree accession functions and decrease the ref-count as you are done with the thread object.

  • ags_thread_parent()
  • ags_thread_next()
  • ags_thread_prev()
  • ags_thread_children()


Refactored AgsMainLoop


The main loop was just refactored to the new needs to provide tic-based parallelism.

Removed various threading related objects


The removed objects are:

  • AgsMutexManager
  • AgsCondManager
  • AgsPollingThread
  • AgsPollFD
  • AgsTaskThread


Either there is no need for it or we use now GLib-2.0 facilities.

Implemented AgsTaskLauncher


The AgsTaskLauncher is invoked every time AgsThread::clock() is full synchronized. The ags_task_launcher_run() function is called by ags_task_launcher_sync_run() running AgsTask in the prior attached GMainContext.

Thought, GSequencer uses a dedicated GMainLoop, it would possible to callback events invoked by an AgsTask directly to the user interface by attaching default GMainContext.





by Joël

 

Back to the top

Powered by Savane 3.13-d3ae.
Corresponding source code