diff -Nru nvidia-settings-updates-295.20/debian/changelog nvidia-settings-updates-295.33/debian/changelog --- nvidia-settings-updates-295.20/debian/changelog 2012-03-30 13:50:31.000000000 +0000 +++ nvidia-settings-updates-295.33/debian/changelog 2012-03-30 13:50:31.000000000 +0000 @@ -1,3 +1,9 @@ +nvidia-settings-updates (295.33-0ubuntu1) precise; urgency=low + + * New upstream release. + + -- Alberto Milone Fri, 30 Mar 2012 14:25:01 +0200 + nvidia-settings-updates (295.20-0ubuntu1) precise; urgency=low * New upstream release. diff -Nru nvidia-settings-updates-295.20/src/gtk+-2.x/ctkdisplaydevice-dfp.c nvidia-settings-updates-295.33/src/gtk+-2.x/ctkdisplaydevice-dfp.c --- nvidia-settings-updates-295.20/src/gtk+-2.x/ctkdisplaydevice-dfp.c 2012-02-07 05:33:03.000000000 +0000 +++ nvidia-settings-updates-295.33/src/gtk+-2.x/ctkdisplaydevice-dfp.c 2012-03-22 18:32:57.000000000 +0000 @@ -1022,6 +1022,73 @@ } /* ctk_display_device_dfp_create_help() */ +static void update_link(CtkDisplayDeviceDfp *ctk_display_device_dfp) +{ + ReturnStatus ret; + gint val, signal_type = ctk_display_device_dfp->signal_type; + const char *link = "Unknown"; + char tmp[32]; + + ret = + NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle, + ctk_display_device_dfp->display_device_mask, + NV_CTRL_FLATPANEL_LINK, &val); + if (ret == NvCtrlSuccess) { + if (signal_type == NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT) { + int lanes; + + lanes = val + 1; + + ret = + NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle, + ctk_display_device_dfp->display_device_mask, + NV_CTRL_DISPLAYPORT_LINK_RATE, &val); + if (ret == NvCtrlSuccess && val == NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED) { + link = "Disabled"; + } else { + const char *bw = "unknown bandwidth"; + + if (ret == NvCtrlSuccess) { + switch (val) { + case NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS: + bw = "1.62 Gbps"; + break; + case NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS: + bw = "2.70 Gbps"; + break; + } + } + + snprintf(tmp, 32, "%d lane%s @ %s", lanes, lanes == 1 ? "" : "s", + bw); + link = tmp; + } + } else { + // LVDS or TMDS + switch(val) { + case NV_CTRL_FLATPANEL_LINK_SINGLE: + link = "Single"; + break; + case NV_CTRL_FLATPANEL_LINK_DUAL: + link = "Dual"; + break; + } + } + } + + gtk_label_set_text + (GTK_LABEL(ctk_display_device_dfp->txt_link), link); +} + + +static void callback_link_changed(GtkObject *object, gpointer arg1, + gpointer user_data) +{ + CtkDisplayDeviceDfp *ctk_display_device_dfp = + CTK_DISPLAY_DEVICE_DFP(user_data); + + update_link(ctk_display_device_dfp); +} /* * dfp_info_setup() - @@ -1031,10 +1098,10 @@ static void dfp_info_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp) { ReturnStatus ret; - gint val, signal_type, gpu_scaling, dfp_scaling; + gint val, gpu_scaling, dfp_scaling; char *chip_location, *link, *signal; char *scaling; - char tmp[32]; + CtkEvent *ctk_event = ctk_display_device_dfp->ctk_event; chip_location = link = signal = "Unknown"; scaling = "Unknown"; @@ -1079,59 +1146,21 @@ } gtk_label_set_text (GTK_LABEL(ctk_display_device_dfp->txt_signal), signal); - signal_type = val; + ctk_display_device_dfp->signal_type = val; /* Link */ - ret = - NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle, - ctk_display_device_dfp->display_device_mask, - NV_CTRL_FLATPANEL_LINK, &val); - if (ret == NvCtrlSuccess) { - if (signal_type == NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT) { - int lanes; - - lanes = val + 1; - - ret = - NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle, - ctk_display_device_dfp->display_device_mask, - NV_CTRL_DISPLAYPORT_LINK_RATE, &val); - if (ret == NvCtrlSuccess && val == NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED) { - link = "Disabled"; - } else { - char *bw = "unknown bandwidth"; - - if (ret == NvCtrlSuccess) { - switch (val) { - case NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS: - bw = "1.62 Gbps"; - break; - case NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS: - bw = "2.70 Gbps"; - break; - } - } - - snprintf(tmp, 32, "%d lane%s @ %s", lanes, lanes == 1 ? "" : "s", - bw); - link = tmp; - } - } else { - // LVDS or TMDS - switch(val) { - case NV_CTRL_FLATPANEL_LINK_SINGLE: - link = "Single"; - break; - case NV_CTRL_FLATPANEL_LINK_DUAL: - link = "Dual"; - break; - } - } - } - gtk_label_set_text - (GTK_LABEL(ctk_display_device_dfp->txt_link), link); + g_signal_connect(G_OBJECT(ctk_event), + CTK_EVENT_NAME(NV_CTRL_FLATPANEL_LINK), + G_CALLBACK(callback_link_changed), + (gpointer) ctk_display_device_dfp); + + g_signal_connect(G_OBJECT(ctk_event), + CTK_EVENT_NAME(NV_CTRL_DISPLAYPORT_LINK_RATE), + G_CALLBACK(callback_link_changed), + (gpointer) ctk_display_device_dfp); + update_link(ctk_display_device_dfp); /* Native Resolution */ diff -Nru nvidia-settings-updates-295.20/src/gtk+-2.x/ctkdisplaydevice-dfp.h nvidia-settings-updates-295.33/src/gtk+-2.x/ctkdisplaydevice-dfp.h --- nvidia-settings-updates-295.20/src/gtk+-2.x/ctkdisplaydevice-dfp.h 2012-02-07 05:33:03.000000000 +0000 +++ nvidia-settings-updates-295.33/src/gtk+-2.x/ctkdisplaydevice-dfp.h 2012-03-22 18:32:57.000000000 +0000 @@ -85,6 +85,7 @@ char *name; gint default_scaling_target; gint default_scaling_method; + gint signal_type; }; struct _CtkDisplayDeviceDfpClass diff -Nru nvidia-settings-updates-295.20/src/gtk+-2.x/ctkevent.c nvidia-settings-updates-295.33/src/gtk+-2.x/ctkevent.c --- nvidia-settings-updates-295.20/src/gtk+-2.x/ctkevent.c 2012-02-07 05:33:03.000000000 +0000 +++ nvidia-settings-updates-295.33/src/gtk+-2.x/ctkevent.c 2012-03-22 18:32:57.000000000 +0000 @@ -28,6 +28,8 @@ * NV-CONTROL -> event -> glib -> CtkEvent -> signal -> GUI */ +#include + #include #include /* Xrandr */ @@ -205,6 +207,7 @@ MAKE_SIGNAL(NV_CTRL_GPU_3D_CLOCK_FREQS); MAKE_SIGNAL(NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS); MAKE_SIGNAL(NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE); + MAKE_SIGNAL(NV_CTRL_FLATPANEL_LINK); MAKE_SIGNAL(NV_CTRL_USE_HOUSE_SYNC); MAKE_SIGNAL(NV_CTRL_IMAGE_SETTINGS); MAKE_SIGNAL(NV_CTRL_XINERAMA_STEREO); @@ -611,6 +614,8 @@ CtkEventSource *event_source = (CtkEventSource *) source; CtkEventStruct event_struct; + memset(&event_struct, 0, sizeof(event_struct)); + /* * if ctk_event_dispatch() is called, then either * ctk_event_prepare() or ctk_event_check() returned TRUE, so we @@ -638,7 +643,6 @@ event_struct.attribute = nvctrlevent->attribute; event_struct.value = nvctrlevent->value; event_struct.display_mask = nvctrlevent->display_mask; - event_struct.availability = TRUE; /* * XXX Is emitting a signal with g_signal_emit() really @@ -672,8 +676,7 @@ event_struct.attribute = nvctrlevent->attribute; event_struct.value = nvctrlevent->value; event_struct.display_mask = nvctrlevent->display_mask; - event_struct.availability = TRUE; - + /* * XXX Is emitting a signal with g_signal_emit() really * the "correct" way of dispatching the event? @@ -707,8 +710,8 @@ event_struct.attribute = nvctrlevent->attribute; event_struct.value = nvctrlevent->value; event_struct.display_mask = nvctrlevent->display_mask; - event_struct.availability = nvctrlevent->availability; - + event_struct.is_availability_changed = TRUE; + /* * XXX Is emitting a signal with g_signal_emit() really * the "correct" way of dispatching the event? @@ -739,7 +742,6 @@ event_struct.attribute = nvctrlevent->attribute; event_struct.value = 0; event_struct.display_mask = nvctrlevent->display_mask; - event_struct.availability = TRUE; /* * XXX Is emitting a signal with g_signal_emit() really * the "correct" way of dispatching the event @@ -769,7 +771,6 @@ event_struct.attribute = nvctrlevent->attribute; event_struct.value = 0; event_struct.display_mask = nvctrlevent->display_mask; - event_struct.availability = TRUE; /* * XXX Is emitting a signal with g_signal_emit() really * the "correct" way of dispatching the event diff -Nru nvidia-settings-updates-295.20/src/gtk+-2.x/ctkevent.h nvidia-settings-updates-295.33/src/gtk+-2.x/ctkevent.h --- nvidia-settings-updates-295.20/src/gtk+-2.x/ctkevent.h 2012-02-07 05:33:03.000000000 +0000 +++ nvidia-settings-updates-295.33/src/gtk+-2.x/ctkevent.h 2012-03-22 18:32:57.000000000 +0000 @@ -64,7 +64,7 @@ gint attribute; gint value; guint display_mask; - gboolean availability; + gboolean is_availability_changed; }; GType ctk_event_get_type (void) G_GNUC_CONST; diff -Nru nvidia-settings-updates-295.20/src/gtk+-2.x/ctkimagesliders.c nvidia-settings-updates-295.33/src/gtk+-2.x/ctkimagesliders.c --- nvidia-settings-updates-295.20/src/gtk+-2.x/ctkimagesliders.c 2012-02-07 05:33:03.000000000 +0000 +++ nvidia-settings-updates-295.33/src/gtk+-2.x/ctkimagesliders.c 2012-03-22 18:32:57.000000000 +0000 @@ -398,30 +398,15 @@ break; case NV_CTRL_IMAGE_SHARPENING: scale = ctk_image_sliders->image_sharpening; - if (event_struct->availability == FALSE) { - gtk_widget_set_sensitive(scale, FALSE); - g_object_set_data(G_OBJECT(CTK_SCALE(scale)->gtk_adjustment), - "attribute active", - GINT_TO_POINTER(0)); - } else if (event_struct->availability == TRUE) { - setup_scale(ctk_image_sliders, NV_CTRL_IMAGE_SHARPENING, - ctk_image_sliders->image_sharpening); - gtk_widget_set_sensitive(scale, TRUE); - g_object_set_data(G_OBJECT(CTK_SCALE(scale)->gtk_adjustment), - "attribute active", - GINT_TO_POINTER(1)); - /* In case of image sharpening slider here we are syncing to the - * recent image sharpening value, so updating status bar message */ - post_scale_value_changed(CTK_SCALE(scale)->gtk_adjustment, - ctk_image_sliders, - gtk_adjustment_get_value( - CTK_SCALE(scale)->gtk_adjustment)); - } break; default: return; } - + + if (event_struct->is_availability_changed) { + setup_scale(ctk_image_sliders, event_struct->attribute, scale); + } + adj = CTK_SCALE(scale)->gtk_adjustment; val = gtk_adjustment_get_value(GTK_ADJUSTMENT(adj)); Binary files /tmp/Vb09HWipRe/nvidia-settings-updates-295.20/src/libXNVCtrl/libXNVCtrl.a and /tmp/7XuHEZxIPo/nvidia-settings-updates-295.33/src/libXNVCtrl/libXNVCtrl.a differ diff -Nru nvidia-settings-updates-295.20/src/libXNVCtrl/NVCtrl.h nvidia-settings-updates-295.33/src/libXNVCtrl/NVCtrl.h --- nvidia-settings-updates-295.20/src/libXNVCtrl/NVCtrl.h 2012-02-07 05:33:04.000000000 +0000 +++ nvidia-settings-updates-295.33/src/libXNVCtrl/NVCtrl.h 2012-03-22 18:32:57.000000000 +0000 @@ -1230,6 +1230,10 @@ * attribute. When NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled, * the GVO device will be locked by NV_CTRL_GVO_LOCK_OWNER_CLONE. * see NV_CTRL_GVO_LOCK_OWNER for detais. + * + * NOTE: This attribute is deprecated and will be removed in a future release. + * To display an X screen over GVO, it is recommended to instead + * configure GVO via MetaModes. */ #define NV_CTRL_GVO_DISPLAY_X_SCREEN 73 /* RW- */ @@ -1385,6 +1389,10 @@ * GVO output is enabled, or before enabling GVO output. The pan * values will be clamped so that GVO output is not panned beyond the * end of the X screen. + * + * NOTE: These attributes are deprecated and will be removed in a future + * release. To display an X screen over GVO, it is recommended to + * instead configure GVO via MetaModes. */ #define NV_CTRL_GVO_X_SCREEN_PAN_X 86 /* RW- */ diff -Nru nvidia-settings-updates-295.20/version.mk nvidia-settings-updates-295.33/version.mk --- nvidia-settings-updates-295.20/version.mk 2012-02-07 05:33:02.000000000 +0000 +++ nvidia-settings-updates-295.33/version.mk 2012-03-22 18:32:57.000000000 +0000 @@ -1 +1 @@ -NVIDIA_VERSION = 295.20 +NVIDIA_VERSION = 295.33