コード例 #1
0
ファイル: ctkxvideo.c プロジェクト: carbn/nvidia-settings
/*
 * 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);
}
コード例 #2
0
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() */
コード例 #3
0
ファイル: ctkclocks.c プロジェクト: scaronni/nvidia-settings
/*****
 *
 * 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() */
コード例 #4
0
ファイル: ctkvcs.c プロジェクト: jethrogb/nvidia-utils
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);
}
コード例 #5
0
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() */
コード例 #6
0
ファイル: ctkclocks.c プロジェクト: scaronni/nvidia-settings
/*****
 *
 * 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() */