Browse Source

UI: Check low disk space only if recording to a file

The Custom FFmpeg Output allows the user to configure it to output to a
URL instead of a file. In OBSBasic::StartRecording(), we unconditionally
call LowDiskSpace() to check for low disk space because we assume that a
"recording" will always be to disk. When os_get_free_disk_space() is
called on a non-existent path, it returns 0, which causes OBS to emit a
low disk space warning. Instead, only call DiskSpaceMessage() if not
"recording" to a URL.
Ryan Foster 1 year ago
parent
commit
11131682b1
2 changed files with 11 additions and 2 deletions
  1. 10 2
      UI/window-basic-main.cpp
  2. 1 0
      UI/window-basic-main.hpp

+ 10 - 2
UI/window-basic-main.cpp

@@ -7652,7 +7652,7 @@ void OBSBasic::StartRecording()
 		return;
 	}
 
-	if (LowDiskSpace()) {
+	if (!IsFFmpegOutputToURL() && LowDiskSpace()) {
 		DiskSpaceMessage();
 		ui->recordButton->setChecked(false);
 		return;
@@ -10887,7 +10887,7 @@ void OBSBasic::OutputPathInvalidMessage()
 				QTStr("Output.BadPath.Text"));
 }
 
-bool OBSBasic::OutputPathValid()
+bool OBSBasic::IsFFmpegOutputToURL() const
 {
 	const char *mode = config_get_string(Config(), "Output", "Mode");
 	if (strcmp(mode, "Advanced") == 0) {
@@ -10901,6 +10901,14 @@ bool OBSBasic::OutputPathValid()
 		}
 	}
 
+	return false;
+}
+
+bool OBSBasic::OutputPathValid()
+{
+	if (IsFFmpegOutputToURL())
+		return true;
+
 	const char *path = GetCurrentOutputPath();
 	return path && *path && QDir(path).exists();
 }

+ 1 - 0
UI/window-basic-main.hpp

@@ -881,6 +881,7 @@ private:
 	void UpdatePause(bool activate = true);
 	void UpdateReplayBuffer(bool activate = true);
 
+	bool IsFFmpegOutputToURL() const;
 	bool OutputPathValid();
 	void OutputPathInvalidMessage();