Show
Ignore:
Timestamp:
09/09/06 22:44:03 (6 years ago)
Author:
ath
Message:

Improve FmDJMixer.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • fm_server/trunk/src/fm_djmixer.c

    r119 r120  
    1616static void fm_djmixer_class_init       (FmDJMixerClass *class); 
    1717static void fm_djmixer_init             (FmDJMixer      *mixer); 
     18static void fm_djmixer_master_level_changed (GObject    *instance, 
     19                                         gfloat         level_l, 
     20                                         gfloat         level_r, 
     21                                         gpointer       user_data); 
    1822static void fm_djmixer_connect_src      (FmElement      *element, 
    1923                                         FmElement      *src); 
     
    2226                                         FmBuffer       *buffer); 
    2327static void fm_djmixer_set_gain         (FmDJMixer      *djm, 
    24                                          guint          port_n, 
     28                                         gint           port_n, 
    2529                                         gdouble        value); 
    2630static void fm_djmixer_set_pan          (FmDJMixer      *djm, 
     
    128132        fm_element_connect_src (FM_ELEMENT (djm->master_level), FM_ELEMENT (djm->master_gain)); 
    129133        fm_element_connect_src (FM_ELEMENT (djm->master_gain), FM_ELEMENT (djm->mixer)); 
     134        rgc_signal_catch (G_OBJECT(djm->master_level), "level_changed", rgc_marshal_VOID__FLOAT_FLOAT, 
     135                          G_CALLBACK(fm_djmixer_master_level_changed), djm); 
    130136} 
    131137 
     
    160166 
    161167 
     168static void 
     169fm_djmixer_master_level_changed         (GObject        *instance, 
     170                                         gfloat         level_l, 
     171                                         gfloat         level_r, 
     172                                         gpointer       user_data) 
     173{ 
     174        FmDJMixer *djm = FM_DJMIXER (user_data); 
     175         
     176        GValue *ch = g_value_init_int (-1); 
     177        GValue *val1 = g_value_init_float (level_l); 
     178        GValue *val2 = g_value_init_float (level_r); 
     179        rgc_signal_emit (djm, "level_changed", ch, val1, val2, NULL); 
     180        g_value_destroy (ch); 
     181        g_value_destroy (val1); 
     182        g_value_destroy (val2);  
     183} 
     184 
     185 
    162186 
    163187static void 
     
    192216static void 
    193217fm_djmixer_set_gain                     (FmDJMixer      *djm, 
     218                                         gint           port_n, 
     219                                         gdouble        value) 
     220{ 
     221        FmEffectGain *gain; 
     222 
     223        if (port_n > -1) { 
     224                g_return_if_fail (port_n < djm->total_ports); 
     225                FmDJMixerChannel *chan = djm->channels[port_n]; 
     226                g_return_if_fail (chan); 
     227                gain = chan->gain; 
     228        } else if (port_n == -1) { 
     229                gain = djm->master_gain; 
     230        } else 
     231                g_warning ("Unknown port %d", port_n); 
     232 
     233        fm_effect_gain_set_gain (gain, value); 
     234} 
     235 
     236 
     237static void 
     238fm_djmixer_set_pan                      (FmDJMixer      *djm, 
    194239                                         guint          port_n, 
    195240                                         gdouble        value) 
     
    200245        g_return_if_fail (chan); 
    201246 
    202         fm_effect_gain_set_gain (chan->gain, value); 
    203 } 
    204  
    205  
    206 static void 
    207 fm_djmixer_set_pan                      (FmDJMixer      *djm, 
     247        fm_effect_pan_set_pan (chan->pan, value); 
     248} 
     249 
     250 
     251static void 
     252fm_djmixer_set_fader                    (FmDJMixer      *djm, 
    208253                                         guint          port_n, 
    209254                                         gdouble        value) 
     
    214259        g_return_if_fail (chan); 
    215260 
    216         fm_effect_pan_set_pan (chan->pan, value); 
    217 } 
    218  
    219  
    220 static void 
    221 fm_djmixer_set_fader                    (FmDJMixer      *djm, 
    222                                          guint          port_n, 
    223                                          gdouble        value) 
    224 { 
    225         g_return_if_fail (port_n < djm->total_ports); 
    226  
    227         FmDJMixerChannel *chan = djm->channels[port_n]; 
    228         g_return_if_fail (chan); 
    229  
    230261        fm_effect_gain_set_gain (chan->fader, value); 
    231262}