mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-05-05 22:40:44 +09:00
Save recording status to file to reload it when gsr overlay restarts
This commit is contained in:
@@ -58,17 +58,9 @@ namespace gsr {
|
||||
}
|
||||
}
|
||||
|
||||
static bool is_number(const char *str) {
|
||||
while(*str) {
|
||||
char c = *str;
|
||||
if(c < '0' || c > '9')
|
||||
return false;
|
||||
++str;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool read_cmdline_arg0(const char *filepath, char *output_buffer) {
|
||||
output_buffer[0] = '\0';
|
||||
|
||||
static bool read_cmdline(const char *filepath, char *output_buffer) {
|
||||
const char *arg0_end = NULL;
|
||||
int fd = open(filepath, O_RDONLY);
|
||||
if(fd == -1)
|
||||
@@ -92,41 +84,4 @@ namespace gsr {
|
||||
close(fd);
|
||||
return false;
|
||||
}
|
||||
|
||||
static pid_t pidof(const char *process_name) {
|
||||
pid_t result = -1;
|
||||
DIR *dir = opendir("/proc");
|
||||
if(!dir)
|
||||
return -1;
|
||||
|
||||
char cmdline_filepath[PATH_MAX];
|
||||
char arg0[PATH_MAX];
|
||||
|
||||
struct dirent *entry;
|
||||
while((entry = readdir(dir)) != NULL) {
|
||||
if(!is_number(entry->d_name))
|
||||
continue;
|
||||
|
||||
snprintf(cmdline_filepath, sizeof(cmdline_filepath), "/proc/%s/cmdline", entry->d_name);
|
||||
if(read_cmdline(cmdline_filepath, arg0) && strcmp(process_name, arg0) == 0) {
|
||||
result = atoi(entry->d_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool is_gpu_screen_recorder_running(pid_t &gsr_pid, GsrMode &mode) {
|
||||
// TODO: Set |mode| by checking cmdline
|
||||
gsr_pid = pidof("gpu-screen-recorder");
|
||||
if(gsr_pid == -1) {
|
||||
mode = GsrMode::Unknown;
|
||||
return false;
|
||||
} else {
|
||||
mode = GsrMode::Record;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user