libobs, UI: Add support for beta builds

Allows the ability to specify beta builds in addition to release
candidate builds
master
jp9000 2021-12-27 10:01:07 -08:00
parent 5be6681687
commit 1655ebf18f
4 changed files with 51 additions and 9 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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@