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

 
 
Latest News
GSequencer v3.3.x replaced all recalls by ags-fx engine posted by jkraehemann, Wed 20 May 2020 07:25:15 AM UTC - 0 replies
Refactor GSequencer's recalls - the ags-fx engine posted by jkraehemann, Sun 03 May 2020 12:08:19 AM UTC - 0 replies
GSequencer v3.3.x release goals posted by jkraehemann, Fri 17 Apr 2020 12:36:11 PM UTC - 0 replies
GSequencer v3.0.4 - new major release arrived posted by jkraehemann, Sun 19 Jan 2020 12:19:27 AM UTC - 0 replies
GSequencer v3.0.0 alpha release posted by jkraehemann, Mon 30 Dec 2019 09:45:27 PM UTC - 0 replies
[Submit News]
[95 news in archive]

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

No messages in GSequencer v3.0.0 planned release date 2020-05-07

 

Back to the top


Powered by Savane 3.5