From 1655ebf18f27bd251050535370d0eacc145812a6 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Mon, 27 Dec 2021 10:01:07 -0800 Subject: [PATCH] libobs, UI: Add support for beta builds Allows the ability to specify beta builds in addition to release candidate builds --- CMakeLists.txt | 27 ++++++++++++++++++++------- UI/window-basic-main.cpp | 18 ++++++++++++++++-- libobs/obs-config.h | 5 +++++ libobs/obsconfig.h.in | 10 ++++++++++ 4 files changed, 51 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7edf307f7..f5aaea626 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,21 +65,34 @@ include(GNUInstallDirs) include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) -# Must be a string in the format of "x.x.x-rcx" +set(OBS_RELEASE_CANDIDATE_MAJOR 0) +set(OBS_RELEASE_CANDIDATE_MINOR 0) +set(OBS_RELEASE_CANDIDATE_PATCH 0) +set(OBS_RELEASE_CANDIDATE 0) +set(OBS_BETA_MAJOR 0) +set(OBS_BETA_MINOR 0) +set(OBS_BETA_PATCH 0) +set(OBS_BETA 0) + +# Must be a string in the format of "x.x.x-rcx" or "x.x.x-betax" if(DEFINED RELEASE_CANDIDATE) set(OBS_VERSION "${RELEASE_CANDIDATE}") string(REPLACE "-rc" "." RC_SPLIT ${RELEASE_CANDIDATE}) string(REPLACE "." ";" RC_SPLIT ${RC_SPLIT}) - message(WARNING "******************************************************************************\nRelease candidate deteced, OBS_VERSION is now: ${OBS_VERSION}\n******************************************************************************") + message(WARNING "******************************************************************************\nRelease candidate detected, OBS_VERSION is now: ${OBS_VERSION}\n******************************************************************************") list(GET RC_SPLIT 0 OBS_RELEASE_CANDIDATE_MAJOR) list(GET RC_SPLIT 1 OBS_RELEASE_CANDIDATE_MINOR) list(GET RC_SPLIT 2 OBS_RELEASE_CANDIDATE_PATCH) list(GET RC_SPLIT 3 OBS_RELEASE_CANDIDATE) -else() - set(OBS_RELEASE_CANDIDATE_MAJOR 0) - set(OBS_RELEASE_CANDIDATE_MINOR 0) - set(OBS_RELEASE_CANDIDATE_PATCH 0) - set(OBS_RELEASE_CANDIDATE 0) +elseif(DEFINED BETA) + set(OBS_VERSION "${BETA}") + string(REPLACE "-beta" "." BETA_SPLIT ${BETA}) + string(REPLACE "." ";" BETA_SPLIT ${BETA_SPLIT}) + message(WARNING "******************************************************************************\nBeta detected, OBS_VERSION is now: ${OBS_VERSION}\n******************************************************************************") + list(GET BETA_SPLIT 0 OBS_BETA_MAJOR) + list(GET BETA_SPLIT 1 OBS_BETA_MINOR) + list(GET BETA_SPLIT 2 OBS_BETA_PATCH) + list(GET BETA_SPLIT 3 OBS_BETA) endif() # Binary Versioning for Windows diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 097066257..45852aa32 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -2119,6 +2119,7 @@ void OBSBasic::ReceivedIntroJson(const QString &text) const std::string &version = item["version"].string_value(); const std::string &url = item["url"].string_value(); int increment = item["increment"].int_value(); + int beta = item["Beta"].int_value(); int rc = item["RC"].int_value(); int major = 0; @@ -2129,9 +2130,12 @@ void OBSBasic::ReceivedIntroJson(const QString &text) if (major == OBS_RELEASE_CANDIDATE_MAJOR && minor == OBS_RELEASE_CANDIDATE_MINOR && rc == OBS_RELEASE_CANDIDATE) { +#elif OBS_BETA > 0 + if (major == OBS_BETA_MAJOR && minor == OBS_BETA_MINOR && + beta == OBS_BETA) { #else if (major == LIBOBS_API_MAJOR_VER && - minor == LIBOBS_API_MINOR_VER && rc == 0) { + minor == LIBOBS_API_MINOR_VER && rc == 0 && beta == 0) { #endif info_url = url; info_increment = increment; @@ -2146,6 +2150,9 @@ void OBSBasic::ReceivedIntroJson(const QString &text) #if OBS_RELEASE_CANDIDATE > 0 uint32_t lastVersion = config_get_int(App()->GlobalConfig(), "General", "LastRCVersion"); +#elif OBS_BETA > 0 + uint32_t lastVersion = config_get_int(App()->GlobalConfig(), "General", + "LastBetaVersion"); #else uint32_t lastVersion = config_get_int(App()->GlobalConfig(), "General", "LastVersion"); @@ -2155,6 +2162,8 @@ void OBSBasic::ReceivedIntroJson(const QString &text) #if OBS_RELEASE_CANDIDATE > 0 if (lastVersion < OBS_RELEASE_CANDIDATE_VER) { +#elif OBS_BETA > 0 + if (lastVersion < OBS_BETA_VER) { #else if ((lastVersion & ~0xFFFF) < (LIBOBS_API_VER & ~0xFFFF)) { #endif @@ -2173,7 +2182,9 @@ void OBSBasic::ReceivedIntroJson(const QString &text) info_increment); /* Don't show What's New dialog for new users */ -#if !defined(OBS_RELEASE_CANDIDATE) || OBS_RELEASE_CANDIDATE == 0 +#if !defined(OBS_RELEASE_CANDIDATE) || OBS_RELEASE_CANDIDATE == 0 || \ + !defined(OBS_BETA) || OBS_BETA == 0 + if (!lastVersion) { return; } @@ -2645,6 +2656,9 @@ OBSBasic::~OBSBasic() #if OBS_RELEASE_CANDIDATE > 0 config_set_int(App()->GlobalConfig(), "General", "LastRCVersion", OBS_RELEASE_CANDIDATE_VER); +#elif OBS_BETA > 0 + config_set_int(App()->GlobalConfig(), "General", "LastBetaVersion", + OBS_BETA_VER); #endif bool alwaysOnTop = IsAlwaysOnTop(this); diff --git a/libobs/obs-config.h b/libobs/obs-config.h index ec02742fc..e9383e6cd 100644 --- a/libobs/obs-config.h +++ b/libobs/obs-config.h @@ -63,6 +63,11 @@ #define OBS_RELEASE_CANDIDATE_PATCH 0 #define OBS_RELEASE_CANDIDATE_VER 0 #define OBS_RELEASE_CANDIDATE 0 +#define OBS_BETA_MAJOR 0 +#define OBS_BETA_MINOR 0 +#define OBS_BETA_PATCH 0 +#define OBS_BETA_VER 0 +#define OBS_BETA 0 #endif #define OBS_INSTALL_DATA_PATH OBS_INSTALL_PREFIX OBS_DATA_PATH diff --git a/libobs/obsconfig.h.in b/libobs/obsconfig.h.in index 5997b1b08..7264da985 100644 --- a/libobs/obsconfig.h.in +++ b/libobs/obsconfig.h.in @@ -40,3 +40,13 @@ OBS_RELEASE_CANDIDATE_MINOR, \ OBS_RELEASE_CANDIDATE_PATCH) #define OBS_RELEASE_CANDIDATE @OBS_RELEASE_CANDIDATE@ + +/* Same thing for beta builds */ +#define OBS_BETA_MAJOR @OBS_BETA_MAJOR@ +#define OBS_BETA_MINOR @OBS_BETA_MINOR@ +#define OBS_BETA_PATCH @OBS_BETA_PATCH@ +#define OBS_BETA_VER \ + MAKE_SEMANTIC_VERSION(OBS_BETA_MAJOR, \ + OBS_BETA_MINOR, \ + OBS_BETA_PATCH) +#define OBS_BETA @OBS_BETA@