/* * xv_sync_to_display_id_toggled() - callback function for changes to the * sync_to_display radio button group; if the specified radio button is * active, send xv_sync_to_display state to the server */ static void xv_sync_to_display_id_toggled(GtkWidget *widget, gpointer user_data) { CtkXVideo *ctk_xvideo = CTK_XVIDEO(user_data); CtrlTarget *ctrl_target = ctk_xvideo->ctrl_target; gboolean enabled; gint device_id; enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); if (!enabled) { /* Ignore 'disable' events. */ return; } user_data = g_object_get_data(G_OBJECT(widget), "display_id"); device_id = GPOINTER_TO_INT(user_data); NvCtrlSetAttribute(ctrl_target, NV_CTRL_XV_SYNC_TO_DISPLAY_ID, device_id); post_xv_sync_to_display_update(ctk_xvideo, widget); }
static void xv_sync_to_display_changed(GtkWidget *widget, gpointer user_data) { CtkXVideo *ctk_xvideo = CTK_XVIDEO(user_data); gboolean enabled; gint value; gchar *label; enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); if (enabled) { user_data = g_object_get_data(G_OBJECT(widget), "xv_sync_to_display"); value = GPOINTER_TO_INT(user_data); NvCtrlSetAttribute(ctk_xvideo->handle, NV_CTRL_XV_SYNC_TO_DISPLAY, value); gtk_label_get(GTK_LABEL(GTK_BIN(widget)->child), &label); post_xv_sync_to_display_changed(ctk_xvideo, enabled, label); } }/* xv_sync_to_display_changed() */
/***** * * Signal handler - Called when the user toggles the "Enable Overclocking" * button. * */ static void overclocking_state_toggled(GtkWidget *widget, gpointer user_data) { CtkClocks *ctk_object = CTK_CLOCKS(user_data); gboolean enabled; int value; /* Get enabled state */ enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); value = (enabled==1) ? NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL : NV_CTRL_GPU_OVERCLOCKING_STATE_NONE; /* Update the server */ NvCtrlSetAttribute(ctk_object->handle, NV_CTRL_GPU_OVERCLOCKING_STATE, value); /* Update the GUI */ overclocking_state_update_gui(ctk_object); } /* enable_overclocking_toggled() */
static void vcs_perf_checkbox_toggled(GtkWidget *widget, gpointer user_data) { CtkVcs *ctk_object = CTK_VCS(user_data); gint enabled; gint ret; enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); ret = NvCtrlSetAttribute(ctk_object->handle, NV_CTRL_VCSC_HIGH_PERF_MODE, enabled); if (ret != NvCtrlSuccess) { if (ctk_object->error_dialog_label) { gchar *str; str = g_strdup_printf("Failed to %s High Performance mode!", (enabled ? "enable" : "disable")); gtk_label_set_text(GTK_LABEL(ctk_object->error_dialog_label), str); gtk_window_set_resizable(GTK_WINDOW(ctk_object->error_dialog), FALSE); gtk_window_set_transient_for (GTK_WINDOW(ctk_object->error_dialog), GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(ctk_object)))); gtk_widget_show(ctk_object->error_dialog); gtk_dialog_run(GTK_DIALOG(ctk_object->error_dialog)); gtk_widget_hide(ctk_object->error_dialog); } goto fail; } return; fail: g_signal_handlers_block_by_func(G_OBJECT(widget), G_CALLBACK(vcs_perf_checkbox_toggled), (gpointer) ctk_object); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), !enabled); gtk_widget_set_sensitive(widget, FALSE); g_signal_handlers_unblock_by_func(G_OBJECT(widget), G_CALLBACK(vcs_perf_checkbox_toggled), (gpointer) ctk_object); }
static void dithering_mode_menu_changed(GtkOptionMenu *dithering_mode_menu, gpointer user_data) { CtkDitheringControls *ctk_dithering_controls = CTK_DITHERING_CONTROLS(user_data); gint history, dithering_mode = NV_CTRL_DITHERING_MODE_AUTO; history = gtk_option_menu_get_history(dithering_mode_menu); dithering_mode = ctk_dithering_controls->dithering_mode_table[history]; NvCtrlSetAttribute(ctk_dithering_controls->handle, NV_CTRL_DITHERING_MODE, dithering_mode); dithering_mode = map_nvctrl_value_to_table(ctk_dithering_controls, dithering_mode); g_signal_handlers_block_by_func (G_OBJECT(ctk_dithering_controls->dithering_mode_menu), G_CALLBACK(dithering_mode_menu_changed), (gpointer) ctk_dithering_controls); gtk_option_menu_set_history (GTK_OPTION_MENU(ctk_dithering_controls->dithering_mode_menu), dithering_mode); g_signal_handlers_unblock_by_func (G_OBJECT(ctk_dithering_controls->dithering_mode_menu), G_CALLBACK(dithering_mode_menu_changed), (gpointer) ctk_dithering_controls); /* reflecting the change in mode to other widgets & reset button */ ctk_dithering_controls_setup(ctk_dithering_controls); post_dithering_mode_update(ctk_dithering_controls, dithering_mode); } /* dithering_mode_menu_changed() */
/***** * * Signal handler - User clicked the "apply" button. * */ static void apply_clocks_clicked(GtkWidget *widget, gpointer user_data) { CtkClocks *ctk_object = CTK_CLOCKS(user_data); GtkRange *gtk_range; ReturnStatus ret; int gpu_clk; int mem_clk; int clocks; /* Update server clocks with values from scales */ if ( !ctk_object->gpu_clk_scale || !ctk_object->mem_clk_scale ) return; /* Get new clock values from sliders */ gtk_range = GTK_RANGE(CTK_SCALE(ctk_object->gpu_clk_scale)->gtk_scale); gpu_clk = gtk_range_get_value(gtk_range); gtk_range = GTK_RANGE(CTK_SCALE(ctk_object->mem_clk_scale)->gtk_scale); mem_clk = gtk_range_get_value(gtk_range); clocks = MAKE_CLOCKS(gpu_clk, mem_clk); /* Set clocks on server */ ret = NvCtrlSetAttribute(ctk_object->handle, (ctk_object->clocks_being_modified==CLOCKS_2D) ? NV_CTRL_GPU_2D_CLOCK_FREQS : NV_CTRL_GPU_3D_CLOCK_FREQS, clocks); if ( ret != NvCtrlSuccess ) { ctk_config_statusbar_message(ctk_object->ctk_config, "Failed to set clock frequencies!"); return; } /* Clear the clocks moved flag */ ctk_object->clocks_moved = False; /* Sync up with the server */ sync_gui_to_modify_clocks(ctk_object, ctk_object->clocks_being_modified); gtk_range = GTK_RANGE(CTK_SCALE(ctk_object->gpu_clk_scale)->gtk_scale); gpu_clk = gtk_range_get_value(gtk_range); gtk_range = GTK_RANGE(CTK_SCALE(ctk_object->mem_clk_scale)->gtk_scale); mem_clk = gtk_range_get_value(gtk_range); ctk_config_statusbar_message(ctk_object->ctk_config, "Set %s clocks to (GPU) %i MHz, " "(Memory) %i MHz", (ctk_object->clocks_being_modified==CLOCKS_2D)? "2D":"3D", gpu_clk, mem_clk); } /* apply_clocks_clicked() */