3071
/** grow_screen_depth_table() **************************************
3073
* realloc the screen_depth_table, if possible.
3077
static gboolean grow_screen_depth_table(CtkDisplayConfig *ctk_object)
3079
int *tmp = realloc(ctk_object->screen_depth_table,
3081
(ctk_object->screen_depth_table_len + 1));
3086
ctk_object->screen_depth_table = tmp;
3087
ctk_object->screen_depth_table_len++;
3091
} /* grow_screen_depth_table() */
3072
3095
/** setup_screen_depth_dropdown() ************************************
3074
3097
* Generates the color depth dropdown based on the currently selected
3111
3133
if (add_depth_30_option) {
3112
menu_item = gtk_menu_item_new_with_label
3113
("1.1 Billion Colors (Depth 30) - Experimental");
3114
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3115
gtk_widget_show(menu_item);
3116
ctk_object->screen_depth_table[screen_depth_table_len++] = 30;
3118
menu_item = gtk_menu_item_new_with_label("16.7 Million Colors (Depth 24)");
3119
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3120
gtk_widget_show(menu_item);
3121
ctk_object->screen_depth_table[screen_depth_table_len++] = 24;
3123
menu_item = gtk_menu_item_new_with_label("65,536 Colors (Depth 16)");
3124
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3125
gtk_widget_show(menu_item);
3126
ctk_object->screen_depth_table[screen_depth_table_len++] = 16;
3128
menu_item = gtk_menu_item_new_with_label("32,768 Colors (Depth 15)");
3129
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3130
gtk_widget_show(menu_item);
3131
ctk_object->screen_depth_table[screen_depth_table_len++] = 15;
3133
menu_item = gtk_menu_item_new_with_label("256 Colors (Depth 8)");
3134
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3135
gtk_widget_show(menu_item);
3136
ctk_object->screen_depth_table[screen_depth_table_len++] = 8;
3138
assert(screen_depth_table_len <= SCREEN_DEPTH_COUNT);
3135
if (grow_screen_depth_table(ctk_object)) {
3136
menu_item = gtk_menu_item_new_with_label
3137
("1.1 Billion Colors (Depth 30) - Experimental");
3138
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3139
gtk_widget_show(menu_item);
3141
ctk_object->screen_depth_table[ctk_object->screen_depth_table_len-1] = 30;
3145
if (grow_screen_depth_table(ctk_object)) {
3146
menu_item = gtk_menu_item_new_with_label("16.7 Million Colors (Depth 24)");
3147
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3148
gtk_widget_show(menu_item);
3149
ctk_object->screen_depth_table[ctk_object->screen_depth_table_len-1] = 24;
3152
if (grow_screen_depth_table(ctk_object)) {
3153
menu_item = gtk_menu_item_new_with_label("65,536 Colors (Depth 16)");
3154
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3155
gtk_widget_show(menu_item);
3156
ctk_object->screen_depth_table[ctk_object->screen_depth_table_len-1] = 16;
3159
if (grow_screen_depth_table(ctk_object)) {
3160
menu_item = gtk_menu_item_new_with_label("32,768 Colors (Depth 15)");
3161
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3162
gtk_widget_show(menu_item);
3163
ctk_object->screen_depth_table[ctk_object->screen_depth_table_len-1] = 15;
3166
if (grow_screen_depth_table(ctk_object)) {
3167
menu_item = gtk_menu_item_new_with_label("256 Colors (Depth 8)");
3168
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
3169
gtk_widget_show(menu_item);
3170
ctk_object->screen_depth_table[ctk_object->screen_depth_table_len-1] = 8;
3139
3173
g_signal_handlers_block_by_func(G_OBJECT(ctk_object->mnu_screen_depth),
3140
3174
G_CALLBACK(screen_depth_changed),
3141
3175
(gpointer) ctk_object);
3477
3512
/* Setup the screen number */
3478
3513
tmp = g_strdup_printf("%d", screen->scrnum);
3479
g_object_set(gtk_widget_get_settings(ctk_object->txt_screen_num),
3480
"gtk-label-select-on-focus", FALSE, NULL);
3515
param_spec = g_object_class_find_property
3516
(G_OBJECT_GET_CLASS(gtk_widget_get_settings(ctk_object->txt_screen_num)),
3517
"gtk-label-select-on-focus");
3521
* When running against versions of gtk that have the
3522
* "gtk-label-select-on-focus" property, set the property to FALSE for
3523
* the screen label so that it isn't auto-selected when switching tabs
3525
g_object_set(gtk_widget_get_settings(ctk_object->txt_screen_num),
3526
"gtk-label-select-on-focus", FALSE, NULL);
3481
3529
gtk_label_set_text(GTK_LABEL(ctk_object->txt_screen_num), tmp);
3584
3632
/* Delete the metamode */
3585
3633
ctk_display_layout_delete_screen_metamode
3586
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), screen, i);
3634
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), screen, i,
3588
3637
nv_info_msg(TAB, "Removed MetaMode %d on Screen %d (No "
3589
3638
"active display devices)\n", i,
3647
3696
/* Delete the metamode */
3648
3697
ctk_display_layout_delete_screen_metamode
3649
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), screen, i);
3698
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), screen, i,
3651
3701
nv_info_msg(TAB, "Removed MetaMode %d on Screen %d (Is "
3652
3702
"Duplicate of MetaMode %d)\n", i+1, screen->scrnum,
4223
4274
(metamode != screen->cur_metamode)) {
4225
4276
ctk_display_layout_delete_screen_metamode
4226
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), screen, m);
4277
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), screen, m,
4230
4283
metamode = next;
4286
/* Now that all the implicit metamodes have been deleted,
4287
* we can recalculate and reselect the current mode
4291
ctk_display_layout_set_screen_metamode
4292
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout),
4293
screen, screen->cur_metamode_idx);
4234
4297
/* Make all other X screens in the layout relative to the GPU's
5998
6063
case GTK_RESPONSE_YES:
5999
6064
ctk_display_layout_delete_screen_metamode
6000
6065
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout),
6001
screen, screen->cur_metamode_idx);
6066
screen, screen->cur_metamode_idx, TRUE);
6003
6068
nv_info_msg(TAB, "Removed MetaMode %d on Screen %d.\n",
6004
6069
screen->cur_metamode_idx+1,
6256
6321
str = strstr(metamode_str, "::");
6257
6322
if (!str) continue;
6259
str = (char *)parse_skip_whitespace(str +2);
6324
str = parse_skip_whitespace(str +2);
6262
6328
/* Delete the metamode */
6263
6329
ret = NvCtrlSetStringAttribute(screen->handle,
6264
6330
NV_CTRL_STRING_DELETE_METAMODE,
6266
6332
if (ret == NvCtrlSuccess) {
6267
6333
nv_info_msg(TAB, "Removed > %s", str);
6271
6339
/* Reorder the list of metamodes */