Procházet zdrojové kódy

linux-v4l2: Avoid nested device open/close.

This moves the calls to the property modified functions so the old
handler can close the device. Otherwise this would cause the device
to be opened multiple times.
fryshorts před 11 roky
rodič
revize
24d1495b84
1 změnil soubory, kde provedl 12 přidání a 4 odebrání
  1. 12 4
      plugins/linux-v4l2/v4l2-input.c

+ 12 - 4
plugins/linux-v4l2/v4l2-input.c

@@ -454,8 +454,10 @@ static bool device_selected(obs_properties_t *props, obs_property_t *p,
 
 
 	obs_property_t *prop = obs_properties_get(props, "input");
 	obs_property_t *prop = obs_properties_get(props, "input");
 	v4l2_input_list(dev, prop);
 	v4l2_input_list(dev, prop);
-	obs_property_modified(prop, settings);
 	v4l2_close(dev);
 	v4l2_close(dev);
+
+	obs_property_modified(prop, settings);
+
 	return true;
 	return true;
 }
 }
 
 
@@ -473,8 +475,10 @@ static bool input_selected(obs_properties_t *props, obs_property_t *p,
 
 
 	obs_property_t *prop = obs_properties_get(props, "pixelformat");
 	obs_property_t *prop = obs_properties_get(props, "pixelformat");
 	v4l2_format_list(dev, prop);
 	v4l2_format_list(dev, prop);
-	obs_property_modified(prop, settings);
 	v4l2_close(dev);
 	v4l2_close(dev);
+
+	obs_property_modified(prop, settings);
+
 	return true;
 	return true;
 }
 }
 
 
@@ -493,8 +497,10 @@ static bool format_selected(obs_properties_t *props, obs_property_t *p,
 	obs_property_t *prop = obs_properties_get(props, "resolution");
 	obs_property_t *prop = obs_properties_get(props, "resolution");
 	v4l2_resolution_list(dev, obs_data_get_int(settings, "pixelformat"),
 	v4l2_resolution_list(dev, obs_data_get_int(settings, "pixelformat"),
 			prop);
 			prop);
-	obs_property_modified(prop, settings);
 	v4l2_close(dev);
 	v4l2_close(dev);
+
+	obs_property_modified(prop, settings);
+
 	return true;
 	return true;
 }
 }
 
 
@@ -516,8 +522,10 @@ static bool resolution_selected(obs_properties_t *props, obs_property_t *p,
 				"resolution"));
 				"resolution"));
 	v4l2_framerate_list(dev, obs_data_get_int(settings, "pixelformat"),
 	v4l2_framerate_list(dev, obs_data_get_int(settings, "pixelformat"),
 			width, height, prop);
 			width, height, prop);
-	obs_property_modified(prop, settings);
 	v4l2_close(dev);
 	v4l2_close(dev);
+
+	obs_property_modified(prop, settings);
+
 	return true;
 	return true;
 }
 }