From 1fc6c50b6290f979ef399083208342ed3f82b25d Mon Sep 17 00:00:00 2001 From: Jim Date: Sun, 30 Oct 2022 20:34:16 -0700 Subject: [PATCH] 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. --- UI/api-interface.cpp | 12 ++++++------ UI/obs-frontend-api/obs-frontend-api.cpp | 6 +++--- UI/obs-frontend-api/obs-frontend-api.h | 6 +++--- UI/obs-frontend-api/obs-frontend-internal.hpp | 6 +++--- docs/sphinx/reference-frontend-api.rst | 14 ++++++++------ 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/UI/api-interface.cpp b/UI/api-interface.cpp index 4f1e51833..c56bf9f2b 100644 --- a/UI/api-interface.cpp +++ b/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 diff --git a/UI/obs-frontend-api/obs-frontend-api.cpp b/UI/obs-frontend-api/obs-frontend-api.cpp index cddbaa042..f1445dde5 100644 --- a/UI/obs-frontend-api/obs-frontend-api.cpp +++ b/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; diff --git a/UI/obs-frontend-api/obs-frontend-api.h b/UI/obs-frontend-api/obs-frontend-api.h index 932e0cc53..c1ad7adfd 100644 --- a/UI/obs-frontend-api/obs-frontend-api.h +++ b/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); /* ------------------------------------------------------------------------- */ diff --git a/UI/obs-frontend-api/obs-frontend-internal.hpp b/UI/obs-frontend-api/obs-frontend-internal.hpp index 607d94dfc..ea057ece1 100644 --- a/UI/obs-frontend-api/obs-frontend-internal.hpp +++ b/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 diff --git a/docs/sphinx/reference-frontend-api.rst b/docs/sphinx/reference-frontend-api.rst index c8d2ee5b7..418d53eca 100644 --- a/docs/sphinx/reference-frontend-api.rst +++ b/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()`