소스 검색

libobs, UI: Add support for beta builds

Allows the ability to specify beta builds in addition to release
candidate builds
jp9000 3 년 전
부모
커밋
1655ebf18f
4개의 변경된 파일51개의 추가작업 그리고 9개의 파일을 삭제
  1. 20 7
      CMakeLists.txt
  2. 16 2
      UI/window-basic-main.cpp
  3. 5 0
      libobs/obs-config.h
  4. 10 0
      libobs/obsconfig.h.in

+ 20 - 7
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

+ 16 - 2
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);

+ 5 - 0
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

+ 10 - 0
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@