From 85dbfda4c9e108ff4874eaa63751149b0d21973b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 7 Apr 2025 14:56:11 +0600 Subject: [PATCH 1/4] Monitor fixes --- source/ubl-settings-video.c | 35 ++++++++++++++++++++++++++--------- source/ubl-settings-video.h | 3 +++ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 18b3323..279e7e9 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -766,10 +766,10 @@ void on_monitor_config_save(GtkWidget *, monitor_edit_window *window){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ResolutionCombo))) resolution = yon_char_divide_search(yon_char_new(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ResolutionCombo)))," ",-1); int rot = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationCombo)); - rotate = yon_char_append("rotation:",rot == 0?"normal":rot==1?"left":rot==2?"right":"invert"); + rotate = yon_char_append("rotate:",rot == 0?"normal":rot==1?"left":rot==2?"right":"invert"); int pos = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PositionPosCombo)); if (pos&>k_combo_box_get_active(GTK_COMBO_BOX(window->PositionPortCombo))){ - position = yon_char_append(pos==1?"lo:":pos==2?"ro:":pos==3?"ab:":"be",gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PositionPortCombo))); + position = yon_char_append(pos==1?"lo:":pos==2?"ro:":pos==3?"ab:":"be:",gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PositionPortCombo))); } // switch_off = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DoNotSwitchOffCheck)); modeline_cvt = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ModelineCVTCheck)); @@ -839,7 +839,7 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){ } else if (!strcmp(parsed[i],"disable")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnableCheck),0); - } else if (!strcmp(parsed[i],"ignore")){ + } else if (!strcmp(parsed[i],"cvt")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ModelineCVTCheck),1); } else if (!strcmp(parsed[i],"primary")){ @@ -861,22 +861,22 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){ yon_gtk_combo_box_text_find(window->PositionPortCombo,parsed[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PositionPosCombo),3); - } else if (strstr(parsed[i],"bee:")||strstr(parsed[i],"Below:")){ + } else if (strstr(parsed[i],"be:")||strstr(parsed[i],"Below:")){ yon_char_divide_search(parsed[i],":",-1); yon_gtk_combo_box_text_find(window->PositionPortCombo,parsed[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->PositionPosCombo),4); } else if (strstr(parsed[i],"rotate:")){ - yon_char_divide_search(parsed[i],":",-1); - if (strcmp(parsed[i],"normal")){ + free(yon_char_divide_search(parsed[i],":",-1)); + if (!strcmp(parsed[i],"normal")){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationCombo),0); - } else if (strcmp(parsed[i],"left")){ + } else if (!strcmp(parsed[i],"left")){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationCombo),1); - } else if (strcmp(parsed[i],"right")){ + } else if (!strcmp(parsed[i],"right")){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationCombo),2); - } else if (strcmp(parsed[i],"invert")){ + } else if (!strcmp(parsed[i],"invert")){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationCombo),3); } @@ -1022,6 +1022,18 @@ gboolean yon_proprietary_append(struct proprietary_struct *target){ gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct *append){ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(append->widgets->KernelsCombo),append->kernel); free(append->kernel); + free(append); + return G_SOURCE_REMOVE; +} + +gboolean yon_proprietary_disconnect(main_window *widgets){ + g_object_ref(main_config.list); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL); + return G_SOURCE_REMOVE; +} + +gboolean yon_proprietary_connect(main_window *widgets){ + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list)); return G_SOURCE_REMOVE; } @@ -1034,6 +1046,7 @@ void *yon_proprietary_local_get(main_window *widgets){ yon_ubl_status_box_render_thread(KERNELS_SUPPORTED_UNFOUND_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } + yon_debug_output("%s\n","Kernel add"); for (int i=0;i-1)){ @@ -1064,7 +1079,9 @@ void *yon_proprietary_local_get(main_window *widgets){ g_idle_add((GSourceFunc)yon_proprietary_append,cur); } } + yon_debug_output("%s\n","Driver end"); } + g_idle_add((GSourceFunc)yon_proprietary_connect,widgets); char *status_text = yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ", !getuid()? main_config.load_mode==1?yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(ROOT_WARNING_LABEL),NULL); yon_ubl_status_box_render_thread(status_text,!getuid()?BACKGROUND_IMAGE_SUCCESS_TYPE:BACKGROUND_IMAGE_FAIL_TYPE); free(status_text); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 315842f..507648d 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -391,4 +391,7 @@ gboolean yon_proprietary_append(struct proprietary_struct *target); gboolean yon_proprietary_clear(main_window *widgets); gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets); void on_gapfix_changed(GtkWidget*self, main_window *widgets); + +gboolean yon_proprietary_disconnect(main_window *widgets); +gboolean yon_proprietary_connect(main_window *widgets); #endif \ No newline at end of file -- 2.35.1 From 83112df809f8a937ea2b30f68eb24f69a7c1c137 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 7 Apr 2025 14:59:56 +0600 Subject: [PATCH 2/4] Russian localisation fixes --- ubl-settings-video_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index 4d183a7..a0e5019 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -95,7 +95,7 @@ msgstr "Разрешение (px): " #: source/ubl-strings.h:9 msgid "Frequency (Hz): " -msgstr "Обновления (Hz): " +msgstr "Частота обновления (Hz): " #: source/ubl-strings.h:10 msgid "Rotation: " -- 2.35.1 From d8dab2b971a5f35c2afe4303f61825df334ada7c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 7 Apr 2025 15:51:10 +0600 Subject: [PATCH 3/4] Resolution and frequency saving fix --- source/ubl-settings-video.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 279e7e9..c76f022 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -752,6 +752,7 @@ void on_monitor_config_save(GtkWidget *, monitor_edit_window *window){ char *target=NULL; int main_display=0; char *resolution = NULL; + const char *frequency = NULL; char *rotate = NULL; char *position = NULL; // int switch_off=0; @@ -763,8 +764,11 @@ void on_monitor_config_save(GtkWidget *, monitor_edit_window *window){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PortCombo))){ target = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PortCombo)); main_display = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->MainCheck)); - if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ResolutionCombo))) - resolution = yon_char_divide_search(yon_char_new(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ResolutionCombo)))," ",-1); + if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ResolutionCombo))){ + char *res_str = yon_char_new(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ResolutionCombo))); + frequency = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->FrequencyCombo)); + resolution = yon_char_unite(yon_char_divide_search(res_str," ",-1),"x",frequency,NULL); + } int rot = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationCombo)); rotate = yon_char_append("rotate:",rot == 0?"normal":rot==1?"left":rot==2?"right":"invert"); int pos = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PositionPosCombo)); @@ -816,9 +820,7 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){ int parsed_size; config_str parsed = yon_char_parse(string,&parsed_size,","); if (parsed_size>0){ - int resolution = yon_gtk_combo_box_text_find(window->ResolutionCombo,parsed[0]); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->ResolutionCombo),resolution); - for (int i=1; iModelineCVTCheck),1); } else if (!strcmp(parsed[i],"gtf")){ @@ -881,6 +883,22 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){ } + } else if (g_ascii_isdigit(parsed[i][0])&&strstr(parsed[i],"x")){ + if (yon_char_count(parsed[i],"x")>1){ + int pos = yon_char_find_last(parsed[i],'x'); + char *res = yon_char_divide(parsed[i],pos); + int resolution = yon_gtk_combo_box_text_find(window->FrequencyCombo,parsed[i]); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->FrequencyCombo),resolution==0?-1:resolution); + free(parsed[i]); + parsed[i]=res; + } + int resolution = yon_gtk_combo_box_text_find(window->ResolutionCombo,parsed[i]); + if (resolution == -1){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UnsupportedCheck),1); + while(gtk_events_pending()) gtk_main_iteration(); + } + resolution = yon_gtk_combo_box_text_find(window->ResolutionCombo,parsed[i]); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->ResolutionCombo),resolution==0?-1:resolution); } } } -- 2.35.1 From 9f51c112f1f354ab52e3a03ff869eb95213d3edd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 7 Apr 2025 16:26:01 +0600 Subject: [PATCH 4/4] Main window monitor swiching fix --- source/ubl-settings-video.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index c76f022..fba9f26 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -733,8 +733,30 @@ void on_monitor_delete(GtkWidget *,monitor_data *window){ */ void on_monitor_switch(GtkWidget *,monitor_data *window){ if(window){ - int enable = 0; - gtk_widget_set_sensitive(window->MonitorImage,!enable); + const char *name = gtk_label_get_text(GTK_LABEL(window->NameLabel)); + char *parameter = config(XORG_MONITOR(name)); + int size; + config_str parsed = yon_char_parse(parameter,&size,","); + int found = yon_char_parsed_check_exist(parsed,size,"enable"); + if (found != -1){ + free(parsed[found]); + parsed[found]=yon_char_new("disable"); + gtk_widget_set_sensitive(window->MonitorImage,0); + } else { + found = yon_char_parsed_check_exist(parsed,size,"disable"); + if (found !=-1){ + free(parsed[found]); + parsed[found]=yon_char_new("enable"); + } else { + parsed = yon_char_parsed_append(parsed,&size,"enable"); + } + gtk_widget_set_sensitive(window->MonitorImage,1); + } + + char *final = yon_char_parsed_to_string(parsed,size,","); + yon_config_register(XORG_MONITOR(name),XORG_MONITOR_get_command,final); + yon_char_parsed_free(parsed,size); + } } -- 2.35.1