ReturnStatus NvCtrlSetAttribute(NvCtrlAttributeHandle *handle, int attr, int val) { if (!handle) return NvCtrlBadArgument; return NvCtrlSetDisplayAttribute(handle, 0, attr, val); } /* NvCtrlSetAttribute() */
static void dfp_scaling_changed(GtkWidget *widget, gpointer user_data) { CtkDisplayDeviceDfp *ctk_display_device_dfp = CTK_DISPLAY_DEVICE_DFP(user_data); gboolean enabled; int scaling_target; int scaling_method; gint value; int i; GtkWidget *radio; /* Get the scaling target */ enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(ctk_display_device_dfp->scaling_gpu_button)); if (enabled) { scaling_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE; } else { scaling_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT; } /* Get the scaling method */ scaling_method = NV_CTRL_GPU_SCALING_METHOD_INVALID; for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) { radio = ctk_display_device_dfp->scaling_method_buttons[i]; if (!radio) continue; enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio)); if (enabled) { user_data = g_object_get_data(G_OBJECT(radio), "scaling_value"); scaling_method = GPOINTER_TO_INT(user_data); break; } } if (scaling_method == NV_CTRL_GPU_SCALING_METHOD_INVALID) { return; } value = MAKE_SCALING_VALUE(scaling_target, scaling_method); NvCtrlSetDisplayAttribute(ctk_display_device_dfp->handle, ctk_display_device_dfp->display_device_mask, NV_CTRL_GPU_SCALING, value); gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, TRUE); post_dfp_scaling_update(ctk_display_device_dfp, value); } /* dfp_scaling_changed() */
static void reset_button_clicked(GtkButton *button, gpointer user_data) { CtkDisplayDeviceDfp *ctk_display_device_dfp = CTK_DISPLAY_DEVICE_DFP(user_data); gint value; ctk_image_sliders_reset (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders)); /* * if scaling is active, send the default scaling value to the * server and update the radio button group */ if (ctk_display_device_dfp->active_attributes & __SCALING) { value = MAKE_SCALING_VALUE(ctk_display_device_dfp->default_scaling_target, ctk_display_device_dfp->default_scaling_method); NvCtrlSetDisplayAttribute(ctk_display_device_dfp->handle, ctk_display_device_dfp->display_device_mask, NV_CTRL_GPU_SCALING, value); dfp_scaling_setup(ctk_display_device_dfp); } /* Reset the color configuration */ if (ctk_display_device_dfp->color_controls) { ctk_color_controls_reset (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls)); } /* Reset the dithering configuration */ if (ctk_display_device_dfp->dithering_controls) { ctk_dithering_controls_reset (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls)); } /* Update the reset button */ gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, FALSE); /* status bar message */ ctk_config_statusbar_message(ctk_display_device_dfp->ctk_config, "Reset hardware defaults for %s.", ctk_display_device_dfp->name); } /* reset_button_clicked() */