1
0
Эх сурвалжийг харах

Check for valid sizes when initializing video

jp9000 11 жил өмнө
parent
commit
86d634eeab

+ 22 - 1
obs/window-basic-main.cpp

@@ -1196,6 +1196,27 @@ void OBSBasic::SetService(obs_service_t newService)
 	}
 }
 
+static inline int AttemptToResetVideo(struct obs_video_info *ovi)
+{
+	int ret = obs_reset_video(ovi);
+	if (ret == OBS_VIDEO_INVALID_PARAM) {
+		struct obs_video_info new_params = *ovi;
+
+		if (new_params.window_width == 0)
+			new_params.window_width = 512;
+		if (new_params.window_height == 0)
+			new_params.window_height = 512;
+
+		new_params.output_width  = new_params.window_width;
+		new_params.output_height = new_params.window_height;
+		new_params.base_width    = new_params.window_width;
+		new_params.base_height   = new_params.window_height;
+		ret = obs_reset_video(&new_params);
+	}
+
+	return ret;
+}
+
 int OBSBasic::ResetVideo()
 {
 	struct obs_video_info ovi;
@@ -1225,7 +1246,7 @@ int OBSBasic::ResetVideo()
 	ovi.window_width  = size.width();
 	ovi.window_height = size.height();
 
-	ret = obs_reset_video(&ovi);
+	ret = AttemptToResetVideo(&ovi);
 	if (ret == OBS_VIDEO_SUCCESS)
 		obs_add_draw_callback(OBSBasic::RenderMain, this);