Changeset 250 for trunk

Show
Ignore:
Timestamp:
06/04/08 21:36:21 (4 years ago)
Author:
ath
Message:

Don't crash if unable to start the output element.

Files:
1 modified

Legend:

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

    r232 r250  
    108108fm_output_start                         (FmOutput       *output) 
    109109{ 
    110         FmOutputClass *class = FM_OUTPUT_GET_CLASS(output); 
    111          
    112         if (class->start) 
    113                 return (*class->start)(output); 
     110        FmOutputClass *klass = FM_OUTPUT_GET_CLASS (output); 
     111        FmElement *element = FM_ELEMENT (output); 
     112 
     113        if (!element->active) { 
     114                g_warning ("element \"%s\" is not active, cancel start!", 
     115                         fm_element_get_name (FM_ELEMENT (output))); 
     116                return FALSE; 
     117        } 
     118 
     119        if (klass->start) 
     120                return (*klass->start) (output); 
    114121        else { 
    115122                g_warning ("\"start\" method not defined for element \"%s\"!", 
    116                          fm_element_get_name(FM_ELEMENT(output))); 
     123                         fm_element_get_name (FM_ELEMENT (output))); 
    117124                return FALSE; 
    118125        } 
     
    123130fm_output_stop                          (FmOutput       *output) 
    124131{ 
    125         FmOutputClass *class = FM_OUTPUT_GET_CLASS(output); 
     132        FmOutputClass *klass = FM_OUTPUT_GET_CLASS (output); 
     133        FmElement *element = FM_ELEMENT (output); 
     134 
     135        if (!element->active) { 
     136                g_warning ("element \"%s\" is not active, cancel start!", 
     137                         fm_element_get_name (FM_ELEMENT (output))); 
     138                return FALSE;            
     139        } 
    126140         
    127         if (class->stop) 
    128                 return (*class->stop)(output); 
     141        if (klass->stop) 
     142                return (*klass->stop) (output); 
    129143        else { 
    130144                g_warning ("\"stop\" method not defined for element \"%s\"!", 
    131                          fm_element_get_name(FM_ELEMENT(output))); 
     145                         fm_element_get_name (FM_ELEMENT (output))); 
    132146                return FALSE; 
    133147        }