瀏覽代碼

UI/obs-frontend-api: Return allocated strings for new funcs

8dda8d35008 added a few functions to get the last
recording/replay/screenshot path, but it should return allocations
because it's possible for the data to be modified at a later point.
Jim 3 年之前
父節點
當前提交
1fc6c50b62

+ 6 - 6
UI/api-interface.cpp

@@ -647,19 +647,19 @@ struct OBSStudioAPI : obs_frontend_callbacks {
 		return App()->IsThemeDark();
 	}
 
-	const char *obs_frontend_get_last_recording(void) override
+	char *obs_frontend_get_last_recording(void) override
 	{
-		return main->outputHandler->lastRecordingPath.c_str();
+		return bstrdup(main->outputHandler->lastRecordingPath.c_str());
 	}
 
-	const char *obs_frontend_get_last_screenshot(void) override
+	char *obs_frontend_get_last_screenshot(void) override
 	{
-		return main->lastScreenshot.c_str();
+		return bstrdup(main->lastScreenshot.c_str());
 	}
 
-	const char *obs_frontend_get_last_replay(void) override
+	char *obs_frontend_get_last_replay(void) override
 	{
-		return main->lastReplay.c_str();
+		return bstrdup(main->lastReplay.c_str());
 	}
 
 	void on_load(obs_data_t *settings) override

+ 3 - 3
UI/obs-frontend-api/obs-frontend-api.cpp

@@ -577,19 +577,19 @@ bool obs_frontend_is_theme_dark(void)
 	return !!callbacks_valid() ? c->obs_frontend_is_theme_dark() : false;
 }
 
-const char *obs_frontend_get_last_recording(void)
+char *obs_frontend_get_last_recording(void)
 {
 	return !!callbacks_valid() ? c->obs_frontend_get_last_recording()
 				   : nullptr;
 }
 
-const char *obs_frontend_get_last_screenshot(void)
+char *obs_frontend_get_last_screenshot(void)
 {
 	return !!callbacks_valid() ? c->obs_frontend_get_last_screenshot()
 				   : nullptr;
 }
 
-const char *obs_frontend_get_last_replay(void)
+char *obs_frontend_get_last_replay(void)
 {
 	return !!callbacks_valid() ? c->obs_frontend_get_last_replay()
 				   : nullptr;

+ 3 - 3
UI/obs-frontend-api/obs-frontend-api.h

@@ -232,9 +232,9 @@ EXPORT const char *obs_frontend_get_locale_string(const char *string);
 
 EXPORT bool obs_frontend_is_theme_dark(void);
 
-EXPORT const char *obs_frontend_get_last_recording(void);
-EXPORT const char *obs_frontend_get_last_screenshot(void);
-EXPORT const char *obs_frontend_get_last_replay(void);
+EXPORT char *obs_frontend_get_last_recording(void);
+EXPORT char *obs_frontend_get_last_screenshot(void);
+EXPORT char *obs_frontend_get_last_replay(void);
 
 /* ------------------------------------------------------------------------- */
 

+ 3 - 3
UI/obs-frontend-api/obs-frontend-internal.hpp

@@ -148,9 +148,9 @@ struct obs_frontend_callbacks {
 
 	virtual bool obs_frontend_is_theme_dark(void) = 0;
 
-	virtual const char *obs_frontend_get_last_recording(void) = 0;
-	virtual const char *obs_frontend_get_last_screenshot(void) = 0;
-	virtual const char *obs_frontend_get_last_replay(void) = 0;
+	virtual char *obs_frontend_get_last_recording(void) = 0;
+	virtual char *obs_frontend_get_last_screenshot(void) = 0;
+	virtual char *obs_frontend_get_last_replay(void) = 0;
 };
 
 EXPORT void

+ 8 - 6
docs/sphinx/reference-frontend-api.rst

@@ -801,18 +801,20 @@ Functions
 
 ---------------------------------------
 
-.. function:: const char *obs_frontend_get_last_recording(void)
+.. function:: char *obs_frontend_get_last_recording(void)
 
-   :return: The file path of the last recording.
+   :return: The file path of the last recording. Free with :c:func:`bfree()`
 
 ---------------------------------------
 
-.. function:: const char *obs_frontend_get_last_screenshot(void)
+.. function:: char *obs_frontend_get_last_screenshot(void)
 
-   :return: The file path of the last screenshot taken.
+   :return: The file path of the last screenshot taken. Free with
+            :c:func:`bfree()`
 
 ---------------------------------------
 
-.. function:: const char *obs_frontend_get_last_replay(void)
+.. function:: char *obs_frontend_get_last_replay(void)
 
-   :return: The file path of the last replay buffer saved.
+   :return: The file path of the last replay buffer saved. Free with
+            :c:func:`bfree()`