Compare commits

..

3 Commits

6 changed files with 34 additions and 32 deletions

View File

@@ -1,4 +1,4 @@
project('gsr-ui', ['c', 'cpp'], version : '1.10.5', default_options : ['warning_level=2', 'cpp_std=c++17'], subproject_dir : 'depends')
project('gsr-ui', ['c', 'cpp'], version : '1.10.6', default_options : ['warning_level=2', 'cpp_std=c++17'], subproject_dir : 'depends')
add_project_arguments('-D_FILE_OFFSET_BITS=64', language : ['c', 'cpp'])

View File

@@ -1,7 +1,7 @@
[package]
name = "gsr-ui"
type = "executable"
version = "1.10.5"
version = "1.10.6"
platforms = ["posix"]
[lang.cpp]

View File

@@ -283,6 +283,8 @@ namespace gsr {
return true;
}
// Note that this doesn't work in the flatpak right now because of this flatpak bug:
// https://github.com/flatpak/flatpak/issues/6486
static bool is_hyprland_waybar_running_as_dock() {
const char *args[] = { "hyprctl", "layers", nullptr };
std::string stdout_str;

View File

@@ -231,21 +231,10 @@ namespace gsr {
if(!it->mjpeg_setups.empty())
webcam_video_format_box_ptr->add_item(TR("Motion-JPEG"), "mjpeg");
webcam_video_format_box_ptr->set_selected_item("auto");
webcam_video_format_box_ptr->set_selected_item(get_current_record_options().webcam_video_format);
const std::string prev_webcam_video_format = get_current_record_options().webcam_video_format;
webcam_video_format_box_ptr->set_selected_item(webcam_video_format_box_ptr->get_selected_id());
webcam_video_format_box_ptr->set_selected_item(prev_webcam_video_format);
selected_camera = *it;
// TODO: Set from config
if(webcam_video_format_box_ptr->get_selected_id() == "yuyv" && !it->yuyv_setups.empty())
selected_camera_setup = selected_camera->yuyv_setups.front();
else if(webcam_video_format_box_ptr->get_selected_id() == "mjpeg" && !it->mjpeg_setups.empty())
selected_camera_setup = selected_camera->mjpeg_setups.front();
else if(webcam_video_format_box_ptr->get_selected_id() == "auto") {
if(!it->mjpeg_setups.empty())
selected_camera_setup = selected_camera->mjpeg_setups.front();
else if(!it->yuyv_setups.empty())
selected_camera_setup = selected_camera->yuyv_setups.front();
}
};
ll->add_widget(std::move(combobox));
@@ -259,6 +248,20 @@ namespace gsr {
auto combobox = std::make_unique<ComboBox>(&get_theme().body_font);
webcam_video_setup_box_ptr = combobox.get();
webcam_video_setup_box_ptr->on_selection_changed = [this](const std::string&, const std::string &id) {
int camera_width = 0;
int camera_height = 0;
int camera_fps = 0;
sscanf(id.c_str(), "%dx%d@%dhz", &camera_width, &camera_height, &camera_fps);
RecordOptions &current_record_options = get_current_record_options();
current_record_options.webcam_camera_width = camera_width;
current_record_options.webcam_camera_height = camera_height;
current_record_options.webcam_camera_fps = camera_fps;
selected_camera_setup = GsrCameraSetup{mgl::vec2i{camera_width, camera_height}, camera_fps};
};
ll->add_widget(std::move(combobox));
return ll;
}
@@ -315,6 +318,12 @@ namespace gsr {
webcam_video_setup_box_ptr->add_item(setup_str, setup_str, false);
}
}
const RecordOptions &current_record_options = get_current_record_options();
char webcam_setup_str[256];
snprintf(webcam_setup_str, sizeof(webcam_setup_str), "%dx%d@%dhz", current_record_options.webcam_camera_width, current_record_options.webcam_camera_height, current_record_options.webcam_camera_fps);
webcam_video_setup_box_ptr->set_selected_item(webcam_video_setup_box_ptr->get_selected_id());
webcam_video_setup_box_ptr->set_selected_item(webcam_setup_str);
};
ll->add_widget(std::move(combobox));
@@ -1755,17 +1764,8 @@ namespace gsr {
if(selected_camera_setup.has_value())
webcam_box_size = clamp_keep_aspect_ratio(selected_camera_setup->resolution.to_vec2f(), webcam_box_size);
int camera_width = 0;
int camera_height = 0;
int camera_fps = 0;
sscanf(webcam_video_setup_box_ptr->get_selected_id().c_str(), "%dx%d@%dhz", &camera_width, &camera_height, &camera_fps);
record_options.webcam_source = webcam_sources_box_ptr->get_selected_id();
record_options.webcam_flip_horizontally = flip_camera_horizontally_checkbox_ptr->is_checked();
record_options.webcam_video_format = webcam_video_format_box_ptr->get_selected_id();
record_options.webcam_camera_width = camera_width;
record_options.webcam_camera_height = camera_height;
record_options.webcam_camera_fps = camera_fps;
record_options.webcam_x = std::round((webcam_box_pos.x / screen_inner_size.x) * 100.0f);
record_options.webcam_y = std::round((webcam_box_pos.y / screen_inner_size.y) * 100.0f);
record_options.webcam_width = std::round((webcam_box_size.x / screen_inner_size.x) * 100.0f);

View File

@@ -1,4 +1,4 @@
const DAEMON_DBUS_NAME = "com.dec05eba.gpu_screen_recorder.gsr_kwin_helper";
const DAEMON_DBUS_NAME = "com.dec05eba.gpu_screen_recorder";
// utils
function sendNewActiveWindowTitle(title) {

View File

@@ -7,7 +7,7 @@ static const char* INTROSPECTION_XML =
"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
"<node>\n"
" <interface name='com.dec05eba.gpu_screen_recorder.gsr_kwin_helper'>\n"
" <interface name='com.dec05eba.gpu_screen_recorder'>\n"
" <method name='setActiveWindowTitle'>\n"
" <arg type='s' name='title' direction='in'/>\n"
" </method>\n"
@@ -41,7 +41,7 @@ public:
return false;
}
int ret = dbus_bus_request_name(connection, "com.dec05eba.gpu_screen_recorder.gsr_kwin_helper",
int ret = dbus_bus_request_name(connection, "com.dec05eba.gpu_screen_recorder",
DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
if (dbus_error_is_set(&err)) {
std::cerr << "Error: gsr-kwin-helper: failed to request name: " << err.message << "\n";
@@ -54,7 +54,7 @@ public:
return false;
}
std::cerr << "Info: gsr-kwin-helper: DBus server initialized on com.dec05eba.gpu_screen_recorder.gsr_kwin_helper\n";
std::cerr << "Info: gsr-kwin-helper: DBus server initialized on com.dec05eba.gpu_screen_recorder\n";
const bool inside_flatpak = access("/app/manifest.json", F_OK) == 0;
@@ -83,7 +83,7 @@ public:
if (dbus_message_is_method_call(msg, "org.freedesktop.DBus.Introspectable", "Introspect")) {
handle_introspect(msg);
} else if (dbus_message_is_method_call(msg, "com.dec05eba.gpu_screen_recorder.gsr_kwin_helper", "setActiveWindowTitle")) {
} else if (dbus_message_is_method_call(msg, "com.dec05eba.gpu_screen_recorder", "setActiveWindowTitle")) {
handle_set_title(msg);
}
@@ -144,7 +144,7 @@ public:
}
void send_error_reply(DBusMessage* msg, const char* error_msg) {
DBusMessage* reply = dbus_message_new_error(msg, "com.dec05eba.gpu_screen_recorder.gsr_kwin_helper.Error", error_msg);
DBusMessage* reply = dbus_message_new_error(msg, "com.dec05eba.gpu_screen_recorder.Error", error_msg);
if (reply) {
dbus_connection_send(connection, reply, nullptr);
dbus_connection_flush(connection);
@@ -214,7 +214,7 @@ public:
~GsrKwinHelper() {
if (connection) {
dbus_bus_release_name(connection, "com.dec05eba.gpu_screen_recorder.gsr_kwin_helper", nullptr);
dbus_bus_release_name(connection, "com.dec05eba.gpu_screen_recorder", nullptr);
dbus_connection_unref(connection);
}
}