summaryrefslogtreecommitdiff
path: root/src/gs-fade.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gs-fade.c')
-rw-r--r--src/gs-fade.c55
1 files changed, 20 insertions, 35 deletions
diff --git a/src/gs-fade.c b/src/gs-fade.c
index 4e4995b..5f162d3 100644
--- a/src/gs-fade.c
+++ b/src/gs-fade.c
@@ -2,6 +2,7 @@
*
* Copyright (C) 2004-2009 William Jon McCann <[email protected]>
* Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2012-2021 MATE Developers
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -47,7 +48,6 @@
/* XFree86 4.x+ Gamma fading */
-
#ifdef HAVE_XF86VMODE_GAMMA
#include <X11/extensions/xf86vmode.h>
@@ -224,9 +224,9 @@ xf86_whack_gamma (int screen,
for (i = 0; i < gamma_info->size; i++)
{
- r[i] = gamma_info->r[i] * ratio;
- g[i] = gamma_info->g[i] * ratio;
- b[i] = gamma_info->b[i] * ratio;
+ r[i] = (unsigned short) (ratio * (float) gamma_info->r[i]);
+ g[i] = (unsigned short) (ratio * (float) gamma_info->g[i]);
+ b[i] = (unsigned short) (ratio * (float) gamma_info->b[i]);
}
status = XF86VidModeSetGammaRamp (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), screen, gamma_info->size, r, g, b);
@@ -256,7 +256,6 @@ xf86_whack_gamma (int screen,
# define XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR 2
# define XF86_VIDMODE_GAMMA_RAMP_MIN_MINOR 1
-
gboolean
gs_fade_get_enabled (GSFade *fade)
{
@@ -273,7 +272,7 @@ gs_fade_set_enabled (GSFade *fade,
if (fade->priv->enabled != enabled)
{
- fade->priv->enabled = enabled;
+ fade->priv->enabled = (enabled != FALSE);
}
}
@@ -306,7 +305,6 @@ gamma_fade_setup (GSFade *fade)
{
/* have ramps */
-
res = XF86VidModeGetGammaRampSize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
GDK_SCREEN_XNUMBER (gdk_screen_get_default ()),
&screen_priv->info->size);
@@ -548,9 +546,9 @@ static void xrandr_crtc_whack_gamma (MateRRCrtc *crtc,
for (i = 0; i < gamma_info->size; i++)
{
- r[i] = gamma_info->r[i] * ratio;
- g[i] = gamma_info->g[i] * ratio;
- b[i] = gamma_info->b[i] * ratio;
+ r[i] = (unsigned short) (ratio * (float) gamma_info->r[i]);
+ g[i] = (unsigned short) (ratio * (float) gamma_info->g[i]);
+ b[i] = (unsigned short) (ratio * (float) gamma_info->b[i]);
}
mate_rr_crtc_set_gamma (crtc, gamma_info->size,
@@ -654,7 +652,7 @@ gs_fade_out_iter (GSFade *fade)
static gboolean
gs_fade_stop (GSFade *fade)
{
- if (fade->priv->timer_id > 0)
+ if (fade->priv->timer_id != 0)
{
g_source_remove (fade->priv->timer_id);
fade->priv->timer_id = 0;
@@ -721,41 +719,28 @@ static void
gs_fade_start (GSFade *fade,
guint timeout)
{
- guint steps_per_sec = 60;
- guint msecs_per_step;
- gboolean active_fade, res;
-
g_return_if_fail (GS_IS_FADE (fade));
- if (fade->priv->screen_priv.fade_type != FADE_TYPE_NONE)
- {
- res = fade->priv->screen_priv.fade_setup (fade);
- if (res == FALSE)
- return;
- }
+ if ((fade->priv->screen_priv.fade_type != FADE_TYPE_NONE) &&
+ (fade->priv->screen_priv.fade_setup (fade) == FALSE))
+ return;
- if (fade->priv->timer_id > 0)
- {
+ if (fade->priv->timer_id != 0)
gs_fade_stop (fade);
- }
fade->priv->active = TRUE;
-
gs_fade_set_timeout (fade, timeout);
- active_fade = FALSE;
if (fade->priv->screen_priv.fade_type != FADE_TYPE_NONE)
- active_fade = TRUE;
-
- if (active_fade)
{
- guint num_steps;
-
- num_steps = (fade->priv->timeout / 1000.0) * steps_per_sec;
- msecs_per_step = 1000 / steps_per_sec;
- fade->priv->alpha_per_iter = 1.0 / (gdouble)num_steps;
+ double steps_per_sec = 60.0;
+ double msecs_per_step = 1000.0 / steps_per_sec;
+ double num_steps = ((double) fade->priv->timeout) / msecs_per_step;
- fade->priv->timer_id = g_timeout_add (msecs_per_step, (GSourceFunc)fade_out_timer, fade);
+ fade->priv->alpha_per_iter = 1.0 / num_steps;
+ fade->priv->timer_id = g_timeout_add ((guint) msecs_per_step,
+ (GSourceFunc) fade_out_timer,
+ fade);
}
else
{