Skip to content
  • Daniel Drake's avatar
    deviceprovider: fix counting number of times started · e0c9b045
    Daniel Drake authored
    GstDeviceProvider has a started_count private variable counter,
    and the gst_device_provider_start() documentation emphasizes the
    importance of balancing the start and stop calls.
    
    However, when starting a provider that is already started, the
    current code will never increment the counter more than once.
    
    So you start it twice, but it will have start_count 1, which is the
    maximum value it will ever see.
    
    Then when you stop it twice, on the 2nd stop, after decrementing the
    counter in gst_device_provider_stop():
    
      else if (provider->priv->started_count < 1) {
        g_critical
            ("Trying to stop a GstDeviceProvider %s which is already stopped",
            GST_OBJECT_NAME (provider));
    
    and the program is killed.
    
    Fix this by incrementing the counter when starting a device provider that
    was already started.
    e0c9b045