Hello community, here is the log from the commit of package gsequencer for openSUSE:Factory checked in at 2019-07-23 22:37:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gsequencer (Old) and /work/SRC/openSUSE:Factory/.gsequencer.new.4126 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gsequencer" Tue Jul 23 22:37:22 2019 rev:47 rq:717777 version:2.2.23 Changes: -------- --- /work/SRC/openSUSE:Factory/gsequencer/gsequencer.changes 2019-07-21 11:35:12.748767626 +0200 +++ /work/SRC/openSUSE:Factory/.gsequencer.new.4126/gsequencer.changes 2019-07-23 22:37:47.322966289 +0200 @@ -1,0 +2,6 @@ +Mon Jul 22 15:58:38 UTC 2019 - Joël Krähemann <[email protected]> + +- new upstream v2.2.23 replaced hard-coded font names. +- fixed timing issue with relative counters. + +------------------------------------------------------------------- Old: ---- gsequencer-2.2.22.tar.gz New: ---- gsequencer-2.2.23.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gsequencer.spec ++++++ --- /var/tmp/diff_new_pack.sl2RBn/_old 2019-07-23 22:37:47.886966173 +0200 +++ /var/tmp/diff_new_pack.sl2RBn/_new 2019-07-23 22:37:47.890966172 +0200 @@ -21,7 +21,7 @@ # activated with --with run_functional_tests command line switch. %bcond_with run_functional_tests Name: gsequencer -Version: 2.2.22 +Version: 2.2.23 Release: 0 Summary: Audio processing engine License: GPL-3.0+ AND AGPL-3.0+ AND GFDL-1.3 ++++++ gsequencer-2.2.22.tar.gz -> gsequencer-2.2.23.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ChangeLog new/gsequencer-2.2.23/ChangeLog --- old/gsequencer-2.2.22/ChangeLog 2019-07-18 10:58:57.000000000 +0200 +++ new/gsequencer-2.2.23/ChangeLog 2019-07-21 16:43:56.000000000 +0200 @@ -1,3 +1,14 @@ +ags (2.2.23) + + [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] + * fixed relative counters and time fraction issues + * improved replacing hard-coded font + * refactored AgsDial to use PangoLayout + * refactored AgsLevel to use PangoLayout + * refactored AgsScale to use PangoLayout + * refactored AgsRuler to use PangoLayout + * refactored AgsCartesian to use PangoLayout + ags (2.2.22) [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/TODO new/gsequencer-2.2.23/TODO --- old/gsequencer-2.2.22/TODO 2019-06-24 17:33:32.000000000 +0200 +++ new/gsequencer-2.2.23/TODO 2019-07-21 12:03:35.000000000 +0200 @@ -7,6 +7,7 @@ A copy of the license is included in the section entitled "GNU Free Documentation License". +* TODO:JK: fix envelope related functions in ags_midi_util.h * TODO:JK: check recall id cleanup * TODO:JK: improved AgsRecallContainer detection of ags_recall_factory.c * TODO:JK: implemented AgsSoundContainer manager diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/ags_devin.c new/gsequencer-2.2.23/ags/audio/ags_devin.c --- old/gsequencer-2.2.22/ags/audio/ags_devin.c 2019-04-29 20:06:18.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/ags_devin.c 2019-07-21 15:00:31.000000000 +0200 @@ -2622,7 +2622,7 @@ #endif devin->tact_counter = 0.0; - devin->delay_counter = 0.0; + devin->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(devin))); devin->tic_counter = 0; devin->nth_ring_buffer = 0; @@ -3950,7 +3950,7 @@ pthread_mutex_unlock(devin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -3970,7 +3970,7 @@ /* reset - delay counter */ pthread_mutex_lock(devin_mutex); - devin->delay_counter = 0.0; + devin->delay_counter = delay_counter + 1.0 - delay; devin->tact_counter += 1.0; pthread_mutex_unlock(devin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/ags_devout.c new/gsequencer-2.2.23/ags/audio/ags_devout.c --- old/gsequencer-2.2.22/ags/audio/ags_devout.c 2019-06-01 20:20:05.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/ags_devout.c 2019-07-21 14:57:21.000000000 +0200 @@ -2674,7 +2674,7 @@ #endif devout->tact_counter = 0.0; - devout->delay_counter = 0.0; + devout->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(devout))); devout->tic_counter = 0; devout->nth_ring_buffer = 0; @@ -3499,7 +3499,7 @@ #endif devout->tact_counter = 0.0; - devout->delay_counter = 0.0; + devout->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(devout))); devout->tic_counter = 0; devout->nth_ring_buffer = 0; @@ -3999,7 +3999,7 @@ pthread_mutex_unlock(devout_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -4019,7 +4019,7 @@ /* reset - delay counter */ pthread_mutex_lock(devout_mutex); - devout->delay_counter = 0.0; + devout->delay_counter = delay_counter + 1.0 - delay; devout->tact_counter += 1.0; pthread_mutex_unlock(devout_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/ags_midiin.c new/gsequencer-2.2.23/ags/audio/ags_midiin.c --- old/gsequencer-2.2.22/ags/audio/ags_midiin.c 2019-04-29 20:06:18.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/ags_midiin.c 2019-07-21 15:07:00.000000000 +0200 @@ -1912,7 +1912,7 @@ #endif midiin->tact_counter = 0.0; - midiin->delay_counter = 0.0; + midiin->delay_counter = floor(midiin->delay); midiin->tic_counter = 0; #ifdef AGS_WITH_ALSA @@ -2210,7 +2210,7 @@ pthread_mutex_unlock(midiin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ ags_sequencer_set_note_offset(sequencer, note_offset + 1); @@ -2221,7 +2221,7 @@ /* reset - delay counter */ pthread_mutex_lock(midiin_mutex); - midiin->delay_counter = 0.0; + midiin->delay_counter = delay_counter + 1.0 - delay; midiin->tact_counter += 1.0; pthread_mutex_unlock(midiin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/core-audio/ags_core_audio_devin.c new/gsequencer-2.2.23/ags/audio/core-audio/ags_core_audio_devin.c --- old/gsequencer-2.2.22/ags/audio/core-audio/ags_core_audio_devin.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/core-audio/ags_core_audio_devin.c 2019-07-21 15:03:58.000000000 +0200 @@ -673,7 +673,7 @@ /* counters */ core_audio_devin->tact_counter = 0.0; - core_audio_devin->delay_counter = 0; + core_audio_devin->delay_counter = 0.0; core_audio_devin->tic_counter = 0; core_audio_devin->start_note_offset = 0; @@ -1798,7 +1798,7 @@ /* */ core_audio_devin->tact_counter = 0.0; - core_audio_devin->delay_counter = 0.0; + core_audio_devin->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(core_audio_devin))); core_audio_devin->tic_counter = 0; core_audio_devin->flags |= (AGS_CORE_AUDIO_DEVIN_INITIALIZED | @@ -2176,7 +2176,7 @@ pthread_mutex_unlock(core_audio_devin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -2196,7 +2196,7 @@ /* reset - delay counter */ pthread_mutex_lock(core_audio_devin_mutex); - core_audio_devin->delay_counter = 0.0; + core_audio_devin->delay_counter = delay_counter + 1.0 - delay; core_audio_devin->tact_counter += 1.0; pthread_mutex_unlock(core_audio_devin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/core-audio/ags_core_audio_devout.c new/gsequencer-2.2.23/ags/audio/core-audio/ags_core_audio_devout.c --- old/gsequencer-2.2.22/ags/audio/core-audio/ags_core_audio_devout.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/core-audio/ags_core_audio_devout.c 2019-07-21 15:03:38.000000000 +0200 @@ -689,7 +689,7 @@ /* counters */ core_audio_devout->tact_counter = 0.0; - core_audio_devout->delay_counter = 0; + core_audio_devout->delay_counter = 0.0; core_audio_devout->tic_counter = 0; core_audio_devout->start_note_offset = 0; @@ -2084,7 +2084,7 @@ /* */ core_audio_devout->tact_counter = 0.0; - core_audio_devout->delay_counter = 0.0; + core_audio_devout->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(core_audio_devout))); core_audio_devout->tic_counter = 0; core_audio_devout->flags |= (AGS_CORE_AUDIO_DEVOUT_INITIALIZED | @@ -2684,7 +2684,7 @@ pthread_mutex_unlock(core_audio_devout_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -2704,7 +2704,7 @@ /* reset - delay counter */ pthread_mutex_lock(core_audio_devout_mutex); - core_audio_devout->delay_counter = 0.0; + core_audio_devout->delay_counter = delay_counter + 1.0 - delay; core_audio_devout->tact_counter += 1.0; pthread_mutex_unlock(core_audio_devout_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/core-audio/ags_core_audio_midiin.c new/gsequencer-2.2.23/ags/audio/core-audio/ags_core_audio_midiin.c --- old/gsequencer-2.2.22/ags/audio/core-audio/ags_core_audio_midiin.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/core-audio/ags_core_audio_midiin.c 2019-07-21 15:06:31.000000000 +0200 @@ -1481,7 +1481,7 @@ /* */ core_audio_midiin->tact_counter = 0.0; - core_audio_midiin->delay_counter = 0.0; + core_audio_midiin->delay_counter = floor(core_audio_midiin->delay); core_audio_midiin->tic_counter = 0; core_audio_midiin->flags |= (AGS_CORE_AUDIO_MIDIIN_INITIALIZED | @@ -1773,7 +1773,7 @@ pthread_mutex_unlock(core_audio_midiin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ ags_sequencer_set_note_offset(sequencer, note_offset + 1); @@ -1784,7 +1784,7 @@ /* reset - delay counter */ pthread_mutex_lock(core_audio_midiin_mutex); - core_audio_midiin->delay_counter = 0.0; + core_audio_midiin->delay_counter = delay_counter + 1.0 - delay; core_audio_midiin->tact_counter += 1.0; pthread_mutex_unlock(core_audio_midiin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/jack/ags_jack_devin.c new/gsequencer-2.2.23/ags/audio/jack/ags_jack_devin.c --- old/gsequencer-2.2.22/ags/audio/jack/ags_jack_devin.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/jack/ags_jack_devin.c 2019-07-21 15:00:50.000000000 +0200 @@ -685,7 +685,7 @@ /* counters */ jack_devin->tact_counter = 0.0; - jack_devin->delay_counter = 0; + jack_devin->delay_counter = 0.0; jack_devin->tic_counter = 0; jack_devin->start_note_offset = 0; @@ -2058,7 +2058,7 @@ /* */ jack_devin->tact_counter = 0.0; - jack_devin->delay_counter = 0.0; + jack_devin->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(jack_devin))); jack_devin->tic_counter = 0; jack_devin->flags |= (AGS_JACK_DEVIN_INITIALIZED | @@ -2439,7 +2439,7 @@ pthread_mutex_unlock(jack_devin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -2459,7 +2459,7 @@ /* reset - delay counter */ pthread_mutex_lock(jack_devin_mutex); - jack_devin->delay_counter = 0.0; + jack_devin->delay_counter = delay_counter + 1.0 - delay; jack_devin->tact_counter += 1.0; pthread_mutex_unlock(jack_devin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/jack/ags_jack_devout.c new/gsequencer-2.2.23/ags/audio/jack/ags_jack_devout.c --- old/gsequencer-2.2.22/ags/audio/jack/ags_jack_devout.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/jack/ags_jack_devout.c 2019-07-21 15:01:03.000000000 +0200 @@ -685,7 +685,7 @@ /* counters */ jack_devout->tact_counter = 0.0; - jack_devout->delay_counter = 0; + jack_devout->delay_counter = 0.0; jack_devout->tic_counter = 0; jack_devout->start_note_offset = 0; @@ -2046,7 +2046,7 @@ /* */ jack_devout->tact_counter = 0.0; - jack_devout->delay_counter = 0.0; + jack_devout->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(jack_devout))); jack_devout->tic_counter = 0; jack_devout->flags |= (AGS_JACK_DEVOUT_INITIALIZED | @@ -2425,7 +2425,7 @@ pthread_mutex_unlock(jack_devout_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -2445,7 +2445,7 @@ /* reset - delay counter */ pthread_mutex_lock(jack_devout_mutex); - jack_devout->delay_counter = 0.0; + jack_devout->delay_counter = delay_counter + 1.0 - delay; jack_devout->tact_counter += 1.0; pthread_mutex_unlock(jack_devout_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/jack/ags_jack_midiin.c new/gsequencer-2.2.23/ags/audio/jack/ags_jack_midiin.c --- old/gsequencer-2.2.22/ags/audio/jack/ags_jack_midiin.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/jack/ags_jack_midiin.c 2019-07-21 15:07:04.000000000 +0200 @@ -1480,7 +1480,7 @@ /* */ jack_midiin->tact_counter = 0.0; - jack_midiin->delay_counter = 0.0; + jack_midiin->delay_counter = floor(jack_midiin->delay); jack_midiin->tic_counter = 0; jack_midiin->flags |= (AGS_JACK_MIDIIN_INITIALIZED | @@ -1755,7 +1755,7 @@ pthread_mutex_unlock(jack_midiin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ ags_sequencer_set_note_offset(sequencer, note_offset + 1); @@ -1766,7 +1766,7 @@ /* reset - delay counter */ pthread_mutex_lock(jack_midiin_mutex); - jack_midiin->delay_counter = 0.0; + jack_midiin->delay_counter = delay_counter + 1.0 - delay; jack_midiin->tact_counter += 1.0; pthread_mutex_unlock(jack_midiin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/midi/ags_midi_util.h new/gsequencer-2.2.23/ags/audio/midi/ags_midi_util.h --- old/gsequencer-2.2.22/ags/audio/midi/ags_midi_util.h 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/midi/ags_midi_util.h 2019-07-21 11:59:35.000000000 +0200 @@ -91,8 +91,8 @@ glong bpm, glong delta_time); glong ags_midi_util_offset_to_delta_time(glong division, - glong tempo, - glong bpm, - guint x); + glong tempo, + glong bpm, + guint x); #endif /*__AGS_MIDI_UTIL_H__*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/pulse/ags_pulse_devin.c new/gsequencer-2.2.23/ags/audio/pulse/ags_pulse_devin.c --- old/gsequencer-2.2.22/ags/audio/pulse/ags_pulse_devin.c 2019-06-01 20:20:05.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/pulse/ags_pulse_devin.c 2019-07-21 15:03:09.000000000 +0200 @@ -2040,7 +2040,7 @@ /* */ pulse_devin->tact_counter = 0.0; - pulse_devin->delay_counter = 0.0; + pulse_devin->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(pulse_devin))); pulse_devin->tic_counter = 0; pulse_devin->flags |= (AGS_PULSE_DEVIN_INITIALIZED | @@ -2424,7 +2424,7 @@ pthread_mutex_unlock(pulse_devin_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -2444,7 +2444,7 @@ /* reset - delay counter */ pthread_mutex_lock(pulse_devin_mutex); - pulse_devin->delay_counter = 0.0; + pulse_devin->delay_counter = delay_counter + 1.0 - delay; pulse_devin->tact_counter += 1.0; pthread_mutex_unlock(pulse_devin_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/pulse/ags_pulse_devout.c new/gsequencer-2.2.23/ags/audio/pulse/ags_pulse_devout.c --- old/gsequencer-2.2.22/ags/audio/pulse/ags_pulse_devout.c 2019-06-01 20:20:05.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/pulse/ags_pulse_devout.c 2019-07-21 15:02:53.000000000 +0200 @@ -2095,7 +2095,7 @@ /* */ pulse_devout->tact_counter = 0.0; - pulse_devout->delay_counter = 0.0; + pulse_devout->delay_counter = floor(ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(pulse_devout))); pulse_devout->tic_counter = 0; pulse_devout->flags |= (AGS_PULSE_DEVOUT_INITIALIZED | @@ -2694,7 +2694,7 @@ pthread_mutex_unlock(pulse_devout_mutex); - if((guint) delay_counter + 1 >= (guint) delay){ + if(delay_counter + 1.0 >= delay){ if(do_loop && note_offset + 1 == loop_right){ ags_soundcard_set_note_offset(soundcard, @@ -2714,7 +2714,7 @@ /* reset - delay counter */ pthread_mutex_lock(pulse_devout_mutex); - pulse_devout->delay_counter = 0.0; + pulse_devout->delay_counter = delay_counter + 1.0 - delay; pulse_devout->tact_counter += 1.0; pthread_mutex_unlock(pulse_devout_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/recall/ags_count_beats_audio_run.c new/gsequencer-2.2.23/ags/audio/recall/ags_count_beats_audio_run.c --- old/gsequencer-2.2.22/ags/audio/recall/ags_count_beats_audio_run.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/recall/ags_count_beats_audio_run.c 2019-07-21 09:43:01.000000000 +0200 @@ -2369,7 +2369,7 @@ pthread_mutex_t *recall_mutex; - if((guint) floor(delay) != 0){ + if(delay != 0.0){ return; } @@ -2506,7 +2506,7 @@ pthread_mutex_t *recall_mutex; - if((guint) floor(delay) != 0){ + if(delay != 0.0){ return; } @@ -2625,7 +2625,7 @@ pthread_mutex_t *recall_mutex; - if((guint) floor(delay) != 0){ + if(delay != 0.0){ return; } @@ -2744,7 +2744,7 @@ pthread_mutex_t *recall_mutex; - if((guint) floor(delay) != 0){ + if(delay != 0.0){ return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/recall/ags_delay_audio_run.c new/gsequencer-2.2.23/ags/audio/recall/ags_delay_audio_run.c --- old/gsequencer-2.2.22/ags/audio/recall/ags_delay_audio_run.c 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/recall/ags_delay_audio_run.c 2019-07-21 14:54:06.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2018 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -439,10 +439,10 @@ delay_audio_run->hide_ref = 0; delay_audio_run->hide_ref_counter = 0; - delay_audio_run->sequencer_counter = 0; - delay_audio_run->notation_counter = 0; - delay_audio_run->wave_counter = 0; - delay_audio_run->midi_counter = 0; + delay_audio_run->sequencer_counter = 0.0; + delay_audio_run->notation_counter = 0.0; + delay_audio_run->wave_counter = 0.0; + delay_audio_run->midi_counter = 0.0; } void @@ -457,6 +457,8 @@ { AgsDelayAudioRun *delay_audio_run; + gdouble absolute_delay; + void (*parent_class_run_init_pre)(AgsRecall *recall); pthread_mutex_t *recall_mutex; @@ -476,10 +478,17 @@ parent_class_run_init_pre(recall); /* run order */ + absolute_delay = ags_soundcard_get_absolute_delay(AGS_SOUNDCARD(recall->output_soundcard)); + pthread_mutex_lock(recall_mutex); delay_audio_run->hide_ref_counter = 0; + delay_audio_run->sequencer_counter = floor(absolute_delay); + delay_audio_run->notation_counter = floor(absolute_delay); + delay_audio_run->wave_counter = floor(absolute_delay); + delay_audio_run->midi_counter = floor(absolute_delay); + pthread_mutex_unlock(recall_mutex); } @@ -529,10 +538,10 @@ dependency_ref == 0){ pthread_mutex_lock(recall_mutex); - delay_audio_run->sequencer_counter = 0; - delay_audio_run->notation_counter = 0; - delay_audio_run->wave_counter = 0; - delay_audio_run->midi_counter = 0; + delay_audio_run->sequencer_counter = 0.0; + delay_audio_run->notation_counter = 0.0; + delay_audio_run->wave_counter = 0.0; + delay_audio_run->midi_counter = 0.0; pthread_mutex_unlock(recall_mutex); @@ -548,7 +557,6 @@ NULL); nth_run = 0; - delay = 0.0; attack = ags_soundcard_get_attack(AGS_SOUNDCARD(output_soundcard)); /* sequencer scope */ @@ -556,7 +564,8 @@ AgsPort *sequencer_delay; gdouble current_delay; - guint sequencer_counter; + gdouble sequencer_counter; + gboolean alloc_sequencer; GValue value = { 0, }; @@ -577,12 +586,16 @@ g_object_unref(sequencer_delay); /* counter */ + alloc_sequencer = FALSE; + pthread_mutex_lock(recall_mutex); - if(delay_audio_run->sequencer_counter + 1 >= (guint) current_delay){ - delay_audio_run->sequencer_counter = 0; + if(delay_audio_run->sequencer_counter + 1.0 >= current_delay){ + alloc_sequencer = TRUE; + + delay_audio_run->sequencer_counter = delay_audio_run->sequencer_counter + 1.0 - current_delay; }else{ - delay_audio_run->sequencer_counter += 1; + delay_audio_run->sequencer_counter += 1.0; } sequencer_counter = delay_audio_run->sequencer_counter; @@ -590,7 +603,9 @@ pthread_mutex_unlock(recall_mutex); /* sequencer */ - if(sequencer_counter == 0){ + if(alloc_sequencer){ + delay = 0.0; + /* sequencer speed */ ags_delay_audio_run_sequencer_alloc_output(delay_audio_run, nth_run, @@ -626,6 +641,7 @@ gdouble current_delay; guint notation_counter; + gboolean alloc_notation; GValue value = { 0, }; @@ -646,12 +662,16 @@ g_object_unref(notation_delay); /* counter */ + alloc_notation = FALSE; + pthread_mutex_lock(recall_mutex); - if(delay_audio_run->notation_counter + 1 >= (guint) current_delay){ - delay_audio_run->notation_counter = 0; + if(delay_audio_run->notation_counter + 1.0 >= current_delay){ + alloc_notation = TRUE; + + delay_audio_run->notation_counter = delay_audio_run->notation_counter + 1.0 - current_delay; }else{ - delay_audio_run->notation_counter += 1; + delay_audio_run->notation_counter += 1.0; } notation_counter = delay_audio_run->notation_counter; @@ -659,7 +679,9 @@ pthread_mutex_unlock(recall_mutex); /* notation */ - if(notation_counter == 0){ + if(alloc_notation){ + delay = 0.0; + /* notation speed */ ags_delay_audio_run_notation_alloc_output(delay_audio_run, nth_run, @@ -695,6 +717,7 @@ gdouble current_delay; guint wave_counter; + gboolean alloc_wave; GValue value = { 0, }; @@ -715,12 +738,16 @@ g_object_unref(wave_delay); /* counter */ + alloc_wave = FALSE; + pthread_mutex_lock(recall_mutex); - if(delay_audio_run->wave_counter + 1 >= (guint) current_delay){ - delay_audio_run->wave_counter = 0; + if(delay_audio_run->wave_counter + 1.0 >= current_delay){ + alloc_wave = TRUE; + + delay_audio_run->wave_counter = delay_audio_run->wave_counter + 1.0 - current_delay; }else{ - delay_audio_run->wave_counter += 1; + delay_audio_run->wave_counter += 1.0; } wave_counter = delay_audio_run->wave_counter; @@ -728,7 +755,9 @@ pthread_mutex_unlock(recall_mutex); /* wave */ - if(wave_counter == 0){ + if(alloc_wave){ + delay = 0.0; + /* wave speed */ ags_delay_audio_run_wave_alloc_output(delay_audio_run, nth_run, @@ -764,6 +793,7 @@ gdouble current_delay; guint midi_counter; + gboolean alloc_midi; GValue value = { 0, }; @@ -784,12 +814,16 @@ g_object_unref(midi_delay); /* counter */ + alloc_midi = FALSE; + pthread_mutex_lock(recall_mutex); - if(delay_audio_run->midi_counter + 1 >= (guint) current_delay){ - delay_audio_run->midi_counter = 0; + if(delay_audio_run->midi_counter + 1.0 >= current_delay){ + alloc_midi = TRUE; + + delay_audio_run->midi_counter = delay_audio_run->midi_counter + 1.0 - current_delay; }else{ - delay_audio_run->midi_counter += 1; + delay_audio_run->midi_counter += 1.0; } midi_counter = delay_audio_run->midi_counter; @@ -797,7 +831,9 @@ pthread_mutex_unlock(recall_mutex); /* midi */ - if(midi_counter == 0){ + if(alloc_midi){ + delay = 0.0; + /* midi speed */ ags_delay_audio_run_midi_alloc_output(delay_audio_run, nth_run, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/audio/recall/ags_delay_audio_run.h new/gsequencer-2.2.23/ags/audio/recall/ags_delay_audio_run.h --- old/gsequencer-2.2.22/ags/audio/recall/ags_delay_audio_run.h 2019-04-29 20:06:19.000000000 +0200 +++ new/gsequencer-2.2.23/ags/audio/recall/ags_delay_audio_run.h 2019-07-21 09:33:48.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2018 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -47,10 +47,10 @@ guint hide_ref; guint hide_ref_counter; - guint sequencer_counter; - guint notation_counter; - guint wave_counter; - guint midi_counter; + gdouble sequencer_counter; + gdouble notation_counter; + gdouble wave_counter; + gdouble midi_counter; }; struct _AgsDelayAudioRunClass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_cartesian.c new/gsequencer-2.2.23/ags/widget/ags_cartesian.c --- old/gsequencer-2.2.22/ags/widget/ags_cartesian.c 2019-04-29 20:06:21.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_cartesian.c 2019-07-20 21:45:08.000000000 +0200 @@ -933,13 +933,13 @@ GtkStyle *cartesian_style; cairo_t *cr; - - cairo_text_extents_t te_x_unit, te_y_unit; - + GList *list; unsigned char *data; guint32 *data_ptr; + + gchar *font_name; gdouble x, y; gdouble x_offset, y_offset; @@ -1113,50 +1113,80 @@ } void ags_cartesian_draw_x_label(){ - cairo_text_extents_t te_x_label; - guint i; for(i = 0; i < width / cartesian->x_label_step_width; i++){ + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + if(cartesian->x_label[i] == NULL){ break; } - cairo_text_extents(cr, - cartesian->x_label[i], - &te_x_label); + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + cartesian->x_label[i], + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + cartesian->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); cairo_move_to(cr, cartesian->x_margin + cartesian->x_label_start + (i * cartesian->x_label_step_width) + cartesian->font_size / 3.0, - cartesian->y_margin + height + cartesian->y_start + cartesian->font_size + te_x_label.height); + cartesian->y_margin + height + cartesian->y_start + cartesian->font_size + (logical_rect.height / PANGO_SCALE)); - cairo_show_text(cr, - cartesian->x_label[i]); + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); } - - cairo_stroke(cr); } void ags_cartesian_draw_y_label(){ - cairo_text_extents_t te_y_label; - guint i; for(i = 0; i < height / cartesian->y_label_step_height; i++){ + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + if(cartesian->y_label[i] == NULL){ break; } - cairo_text_extents(cr, - cartesian->y_label[i], - &te_y_label); + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + cartesian->y_label[i], + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + cartesian->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); cairo_move_to(cr, cartesian->x_margin - cartesian->x_start + cartesian->font_size / 2.0, cartesian->y_margin + height - cartesian->y_label_start - (i * cartesian->y_label_step_height) - cartesian->font_size / 3.0); + + pango_cairo_show_layout(cr, + layout); - cairo_show_text(cr, - cartesian->y_label[i]); + g_object_unref(layout); } cairo_stroke(cr); @@ -1464,6 +1494,10 @@ } /* entry point */ + if(!AGS_IS_CARTESIAN(cartesian)){ + return; + } + widget = GTK_WIDGET(cartesian); cartesian_style = gtk_widget_get_style(widget); @@ -1472,6 +1506,10 @@ if(cr == NULL){ return; } + + g_object_get(gtk_settings_get_default(), + "gtk-font-name", &font_name, + NULL); /* clear bg */ cairo_set_source_rgb(cr, @@ -1567,36 +1605,70 @@ /* x unit */ if((AGS_CARTESIAN_X_UNIT & (cartesian->flags)) != 0){ - cairo_text_extents(cr, - cartesian->x_unit, - &te_x_unit); + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + cartesian->x_unit, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + cartesian->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); cairo_move_to(cr, - cartesian->x_margin - te_x_unit.width - 3.0, + cartesian->x_margin - (logical_rect.width / PANGO_SCALE) - 3.0, cartesian->y_margin + height + cartesian->y_start); - cairo_show_text(cr, - cartesian->x_unit); - - cairo_stroke(cr); + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); } /* y unit */ if((AGS_CARTESIAN_Y_UNIT & (cartesian->flags)) != 0){ - cairo_text_extents(cr, - cartesian->y_unit, - &te_y_unit); + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + cartesian->y_unit, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + cartesian->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); cairo_move_to(cr, cartesian->x_margin - cartesian->x_start, - cartesian->y_margin + height + te_y_unit.height + 3.0); + cartesian->y_margin + height + (logical_rect.height / PANGO_SCALE) + 3.0); - cairo_show_text(cr, - cartesian->y_unit); - - cairo_stroke(cr); + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); } + g_free(font_name); + /* pop group */ cairo_pop_group_to_source(cr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_dial.c new/gsequencer-2.2.23/ags/widget/ags_dial.c --- old/gsequencer-2.2.22/ags/widget/ags_dial.c 2019-07-14 15:21:37.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_dial.c 2019-07-20 21:31:25.000000000 +0200 @@ -1517,7 +1517,7 @@ GtkStyle *dial_style; cairo_t *cr; cairo_text_extents_t te_up, te_down; - + gdouble button_width, button_height, margin_left, margin_right; gdouble radius, outline_strength; guint width, height; @@ -1555,13 +1555,7 @@ padding_top = (GTK_WIDGET(dial)->allocation.height - height) / 2; padding_left = (GTK_WIDGET(dial)->allocation.width - width) / 2; - - cairo_select_font_face(cr, "Georgia", - CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); - cairo_set_font_size (cr, (gdouble) dial->font_size); - cairo_text_extents (cr, "-", &te_down); - cairo_text_extents (cr, "+", &te_up); - + /* clear bg */ cairo_set_source_rgb(cr, dial_style->fg[0].red / white_gc, @@ -1574,6 +1568,19 @@ cairo_fill(cr); if((AGS_DIAL_WITH_BUTTONS & (dial->flags)) != 0){ + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + gchar *font_name; + + static const gchar *text = "-"; + + g_object_get(gtk_settings_get_default(), + "gtk-font-name", &font_name, + NULL); + /* bg */ cairo_set_source_rgb(cr, dial_style->bg[0].red / white_gc, @@ -1599,14 +1606,48 @@ cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER); cairo_stroke(cr); + /* text */ + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + text, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + dial->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); + cairo_move_to(cr, - padding_left + 1.0 + 0.5 - te_down.width / 2.0 - te_down.x_bearing + button_width / 2.25, - padding_top + 0.5 - te_down.height / 2.0 - te_down.y_bearing + (radius * 2.0) - button_height / 2.0 + outline_strength); - cairo_show_text(cr, "-"); - } + padding_left + 1.0 + 0.5 - (logical_rect.width / PANGO_SCALE) / 2.0 + button_width / 2.25, + padding_top + 0.5 - (logical_rect.height / PANGO_SCALE) / 2.0 + (radius * 2.0) - button_height / 2.0 + outline_strength - 1.0); + + pango_cairo_show_layout(cr, + layout); + g_object_unref(layout); + + g_free(font_name); + } if((AGS_DIAL_WITH_BUTTONS & (dial->flags)) != 0){ + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + gchar *font_name; + + static const gchar *text = "+"; + + g_object_get(gtk_settings_get_default(), + "gtk-font-name", &font_name, + NULL); + /* bg */ cairo_set_source_rgb(cr, dial_style->bg[0].red / white_gc, @@ -1632,10 +1673,32 @@ cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER); cairo_stroke(cr); - cairo_move_to (cr, - padding_left + 1.0 + 0.5 - te_up.width / 2.0 - te_up.x_bearing + (radius * 2.0) + margin_left + margin_right + button_width + button_width / 2.25, - padding_top + 0.5 - te_up.height / 2.0 - te_up.y_bearing + (radius * 2.0) - button_height / 2.0 + outline_strength); - cairo_show_text (cr, "+"); + /* text */ + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + text, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + dial->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); + + cairo_move_to(cr, + padding_left + 1.0 + 0.5 - (logical_rect.width / PANGO_SCALE) / 2.0 + (radius * 2.0) + margin_left + margin_right + button_width + button_width / 2.25, + padding_top + 0.5 - (logical_rect.height / PANGO_SCALE) / 2.0 + (radius * 2.0) - button_height / 2.0 + outline_strength - 1.0); + + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); + + g_free(font_name); } /* border fill * / diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_level.c new/gsequencer-2.2.23/ags/widget/ags_level.c --- old/gsequencer-2.2.22/ags/widget/ags_level.c 2019-07-18 10:58:57.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_level.c 2019-07-20 21:30:59.000000000 +0200 @@ -1142,34 +1142,17 @@ { cairo_t *cr; - gchar *str; - + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + gchar *font_name; + gchar *text; + guint width, height; guint x_start, y_start; - auto void ags_level_draw_string(cairo_t *cr, gchar *str); - - void ags_level_draw_string(cairo_t *cr, gchar *str){ - PangoLayout *layout; - PangoFontDescription *desc; - - layout = pango_cairo_create_layout(cr); - pango_layout_set_text(layout, str, -1); - desc = pango_font_description_from_string("Sans Slant"); //pango_font_description_copy_static("Georgia Bold 11"); - pango_font_description_set_size(desc, - level->font_size * PANGO_SCALE); - pango_layout_set_font_description(layout, desc); - pango_font_description_free(desc); - - pango_cairo_update_layout(cr, layout); - pango_cairo_show_layout(cr, layout); - -#ifndef __APPLE__ - // pango_fc_font_map_cache_clear(pango_cairo_font_map_get_default()); -#endif - g_object_unref(layout); - } - static const gdouble white_gc = 65535.0; if(!AGS_IS_LEVEL(level)){ @@ -1181,6 +1164,10 @@ if(cr == NULL){ return; } + + g_object_get(gtk_settings_get_default(), + "gtk-font-name", &font_name, + NULL); width = GTK_WIDGET(level)->allocation.width; height = GTK_WIDGET(level)->allocation.height; @@ -1213,24 +1200,46 @@ //TODO:JK: implement me /* show samplerate */ - str = g_strdup_printf("%u [Hz]", level->samplerate); + text = g_strdup_printf("%u [Hz]", level->samplerate); + + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + text, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + level->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); if(level->layout == AGS_LEVEL_LAYOUT_VERTICAL){ cairo_move_to(cr, - x_start + level->font_size, y_start + height - 1.0); + x_start + (logical_rect.height / PANGO_SCALE) / 2.0, + y_start + height - 1.0); cairo_rotate(cr, 2 * M_PI * 0.75); }else{ cairo_move_to(cr, - x_start + level->font_size, y_start + 1.0); + x_start, + y_start + (logical_rect.height / PANGO_SCALE) / 2.0 + 1.0); } - - ags_level_draw_string(cr, - str); + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); + + g_free(font_name); + g_free(text); + cairo_pop_group_to_source(cr); cairo_paint(cr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_level.h new/gsequencer-2.2.23/ags/widget/ags_level.h --- old/gsequencer-2.2.22/ags/widget/ags_level.h 2019-07-18 10:58:57.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_level.h 2019-07-20 21:22:44.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2017 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_ruler.c new/gsequencer-2.2.23/ags/widget/ags_ruler.c --- old/gsequencer-2.2.22/ags/widget/ags_ruler.c 2019-07-18 10:58:57.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_ruler.c 2019-07-20 21:32:12.000000000 +0200 @@ -420,8 +420,8 @@ GtkWidget *widget; cairo_t *cr; - - gchar *str; + + gchar *font_name; gdouble tact_factor, zoom_factor; gdouble tact; @@ -431,27 +431,11 @@ guint x0; guint z; guint i, i_stop; - - auto void ags_ruler_draw_string(cairo_t *cr, gchar *str); - - void ags_ruler_draw_string(cairo_t *cr, gchar *str){ - PangoLayout *layout; - PangoFontDescription *desc; - - layout = pango_cairo_create_layout(cr); - pango_layout_set_text(layout, str, -1); - desc = pango_font_description_from_string("Sans Slant"); //pango_font_description_copy_static("Georgia Bold 11"); - pango_font_description_set_size(desc, - ruler->font_size * PANGO_SCALE); - pango_layout_set_font_description(layout, desc); - pango_font_description_free(desc); - - pango_cairo_update_layout(cr, layout); - pango_cairo_show_layout(cr, layout); - - g_object_unref(layout); - } + if(!AGS_IS_RULER(ruler)){ + return; + } + widget = GTK_WIDGET(ruler); cr = gdk_cairo_create(widget->window); @@ -459,7 +443,11 @@ if(cr == NULL){ return; } - + + g_object_get(gtk_settings_get_default(), + "gtk-font-name", &font_name, + NULL); + cairo_surface_flush(cairo_get_target(cr)); cairo_push_group(cr); @@ -497,6 +485,31 @@ (double) (widget->allocation.height)); if(tact < 1.0){ + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + gchar *text; + + text = g_strdup_printf("%u", + (guint) ((gdouble) z / tact)); + + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + text, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + ruler->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); + /* draw large step */ cairo_set_line_width(cr, 1.75); @@ -510,13 +523,39 @@ (double) (i * step - x0), (double) (widget->allocation.height - ruler->large_step - (ruler->font_size + AGS_RULER_FREE_SPACE))); - str = g_strdup_printf("%u", - (guint) ((gdouble) z / tact)); - ags_ruler_draw_string(cr, str); + pango_cairo_show_layout(cr, + layout); - g_free(str); + g_object_unref(layout); + + g_free(text); }else{ if(z % (guint) floor(tact) == 0){ + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + gchar *text; + + text = g_strdup_printf("%u", + (guint) ((gdouble) z / tact)); + + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + text, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + ruler->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); + /* draw large step */ cairo_set_line_width(cr, 1.75); @@ -529,12 +568,13 @@ cairo_move_to(cr, (double) (i * step - x0), (double) (widget->allocation.height - ruler->large_step - (ruler->font_size + AGS_RULER_FREE_SPACE))); - - str = g_strdup_printf("%u", - (guint) ((gdouble) z / tact)); - ags_ruler_draw_string(cr, str); - g_free(str); + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); + + g_free(text); }else{ /* draw small step */ cairo_set_line_width(cr, @@ -549,6 +589,8 @@ cairo_stroke(cr); } + g_free(font_name); + cairo_pop_group_to_source(cr); cairo_paint(cr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_scale.c new/gsequencer-2.2.23/ags/widget/ags_scale.c --- old/gsequencer-2.2.22/ags/widget/ags_scale.c 2019-07-18 10:58:57.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_scale.c 2019-07-20 21:31:08.000000000 +0200 @@ -1207,31 +1207,15 @@ { cairo_t *cr; + PangoLayout *layout; + PangoFontDescription *desc; + + PangoRectangle ink_rect, logical_rect; + + gchar *font_name; + guint width, height; guint x_start, y_start; - - auto void ags_scale_draw_string(cairo_t *cr, gchar *str); - - void ags_scale_draw_string(cairo_t *cr, gchar *str){ - PangoLayout *layout; - PangoFontDescription *desc; - - layout = pango_cairo_create_layout(cr); - pango_layout_set_text(layout, str, -1); - desc = pango_font_description_from_string("Sans Slant"); //pango_font_description_copy_static("Georgia Bold 11"); - pango_font_description_set_size(desc, - scale->font_size * PANGO_SCALE); - pango_layout_set_font_description(layout, desc); - pango_font_description_free(desc); - - pango_cairo_update_layout(cr, layout); - pango_cairo_show_layout(cr, layout); - -#ifndef __APPLE__ - // pango_fc_font_map_cache_clear(pango_cairo_font_map_get_default()); -#endif - g_object_unref(layout); - } static const gdouble white_gc = 65535.0; @@ -1244,6 +1228,10 @@ if(cr == NULL){ return; } + + g_object_get(gtk_settings_get_default(), + "gtk-font-name", &font_name, + NULL); width = GTK_WIDGET(scale)->allocation.width; height = GTK_WIDGET(scale)->allocation.height; @@ -1276,6 +1264,21 @@ //TODO:JK: implement me /* show control name */ + layout = pango_cairo_create_layout(cr); + pango_layout_set_text(layout, + scale->control_name, + -1); + desc = pango_font_description_from_string(font_name); + pango_font_description_set_size(desc, + scale->font_size * PANGO_SCALE); + pango_layout_set_font_description(layout, + desc); + pango_font_description_free(desc); + + pango_layout_get_extents(layout, + &ink_rect, + &logical_rect); + cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); @@ -1289,8 +1292,12 @@ x_start + scale->font_size, y_start + 1.0); } - ags_scale_draw_string(cr, - scale->control_name); + pango_cairo_show_layout(cr, + layout); + + g_object_unref(layout); + + g_free(font_name); cairo_pop_group_to_source(cr); cairo_paint(cr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/ags/widget/ags_scale.h new/gsequencer-2.2.23/ags/widget/ags_scale.h --- old/gsequencer-2.2.22/ags/widget/ags_scale.h 2019-07-18 10:58:57.000000000 +0200 +++ new/gsequencer-2.2.23/ags/widget/ags_scale.h 2019-07-20 21:22:31.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2017 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/configure new/gsequencer-2.2.23/configure --- old/gsequencer-2.2.22/configure 2019-07-18 10:59:53.000000000 +0200 +++ new/gsequencer-2.2.23/configure 2019-07-21 16:45:07.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gsequencer 2.2.22. +# Generated by GNU Autoconf 2.69 for gsequencer 2.2.23. # # Report bugs to <[email protected]>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='gsequencer' PACKAGE_TARNAME='gsequencer' -PACKAGE_VERSION='2.2.22' -PACKAGE_STRING='gsequencer 2.2.22' +PACKAGE_VERSION='2.2.23' +PACKAGE_STRING='gsequencer 2.2.23' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1508,7 +1508,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gsequencer 2.2.22 to adapt to many kinds of systems. +\`configure' configures gsequencer 2.2.23 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1583,7 +1583,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gsequencer 2.2.22:";; + short | recursive ) echo "Configuration of gsequencer 2.2.23:";; esac cat <<\_ACEOF @@ -1790,7 +1790,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gsequencer configure 2.2.22 +gsequencer configure 2.2.23 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2388,7 +2388,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gsequencer $as_me 2.2.22, which was +It was created by gsequencer $as_me 2.2.23, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3255,7 +3255,7 @@ # Define the identity of the package. PACKAGE='gsequencer' - VERSION='2.2.22' + VERSION='2.2.23' cat >>confdefs.h <<_ACEOF @@ -23891,7 +23891,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gsequencer $as_me 2.2.22, which was +This file was extended by gsequencer $as_me 2.2.23, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23957,7 +23957,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gsequencer config.status 2.2.22 +gsequencer config.status 2.2.23 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/configure.ac new/gsequencer-2.2.23/configure.ac --- old/gsequencer-2.2.22/configure.ac 2019-07-18 10:59:31.000000000 +0200 +++ new/gsequencer-2.2.23/configure.ac 2019-07-21 16:44:14.000000000 +0200 @@ -8,7 +8,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([gsequencer],[2.2.22],[[email protected]]) +AC_INIT([gsequencer],[2.2.23],[[email protected]]) AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_SRCDIR([ags/config.h.in]) AC_CONFIG_HEADERS([ags/config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.22/po/gsequencer.pot new/gsequencer-2.2.23/po/gsequencer.pot --- old/gsequencer-2.2.22/po/gsequencer.pot 2019-07-18 11:01:54.000000000 +0200 +++ new/gsequencer-2.2.23/po/gsequencer.pot 2019-07-21 16:45:46.000000000 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gsequencer 2.2.22\n" +"Project-Id-Version: gsequencer 2.2.23\n" "Report-Msgid-Bugs-To: [email protected]\n" -"POT-Creation-Date: 2019-07-18 11:01+0200\n" +"POT-Creation-Date: 2019-07-21 16:45+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n"
