37
37
#include <libxfce4util/libxfce4util.h>
39
39
#include "libxfpm/xfpm-string.h"
40
#include "libxfpm/xfpm-common.h"
41
42
#include "xfpm-dpms.h"
42
43
#include "xfpm-adapter.h"
43
44
#include "xfpm-xfconf.h"
44
45
#include "xfpm-screen-saver.h"
46
#include "xfpm-button-hal.h"
45
47
#include "xfpm-config.h"
219
225
xfpm_dpms_refresh (dpms);
229
xfpm_dpms_force_off (gpointer data)
235
dpms = XFPM_DPMS (data);
239
if ( G_UNLIKELY (!DPMSInfo (GDK_DISPLAY (), &power_level, &state)) )
241
g_warning ("Cannot get DPMSInfo");
245
if ( power_level != DPMSModeOff )
247
if ( xfpm_is_multihead_connected () )
250
TRACE ("Checking if we have multiple monitor : no");
251
TRACE ("Forcing DPMSModeOff");
252
if ( !DPMSForceLevel (GDK_DISPLAY (), DPMSModeOff ) )
254
g_warning ("Cannot set Force DPMSModeOff");
259
dpms->priv->switch_off_timeout_id = 0;
264
xfpm_dpms_force_on (gpointer data)
270
dpms = XFPM_DPMS (data);
274
if ( G_UNLIKELY (!DPMSInfo (GDK_DISPLAY (), &power_level, &state)) )
276
g_warning ("Cannot get DPMSInfo");
280
if ( power_level != DPMSModeOn )
282
TRACE ("Forcing DPMSModeOn");
283
if ( !DPMSForceLevel (GDK_DISPLAY (), DPMSModeOn ) )
285
g_warning ("Cannot set Force DPMSModeOn");
290
dpms->priv->switch_on_timeout_id = 0;
295
xfpm_dpms_lid_event_cb (XfpmButtonHal *bt, gboolean pressed, XfpmDpms *dpms)
297
TRACE ("pressed: %s", xfpm_bool_to_string (pressed));
299
if ( dpms->priv->switch_off_timeout_id != 0 )
301
g_source_remove (dpms->priv->switch_off_timeout_id);
302
dpms->priv->switch_off_timeout_id = 0;
305
if ( dpms->priv->switch_on_timeout_id != 0 )
307
g_source_remove (dpms->priv->switch_on_timeout_id );
308
dpms->priv->switch_on_timeout_id = 0;
313
g_timeout_add (100, (GSourceFunc) xfpm_dpms_force_off, dpms);
317
g_timeout_add (100, (GSourceFunc) xfpm_dpms_force_on, dpms);
223
322
xfpm_dpms_class_init(XfpmDpmsClass *klass)
238
337
dpms->priv = XFPM_DPMS_GET_PRIVATE(dpms);
240
339
dpms->priv->dpms_capable = DPMSCapable (GDK_DISPLAY());
340
dpms->priv->switch_off_timeout_id = 0;
341
dpms->priv->switch_on_timeout_id = 0;
242
343
if ( dpms->priv->dpms_capable )
244
345
dpms->priv->adapter = xfpm_adapter_new ();
245
346
dpms->priv->saver = xfpm_screen_saver_new ();
246
347
dpms->priv->conf = xfpm_xfconf_new ();
348
dpms->priv->bt_hal = xfpm_button_hal_get ();
248
350
g_signal_connect (dpms->priv->saver, "screen-saver-inhibited",
249
351
G_CALLBACK(xfpm_dpms_inhibit_changed_cb), dpms);
254
356
g_signal_connect (dpms->priv->conf, "notify",
255
357
G_CALLBACK (xfpm_dpms_settings_changed_cb), dpms);
359
g_signal_connect (dpms->priv->bt_hal, "lid-event",
360
G_CALLBACK (xfpm_dpms_lid_event_cb), dpms);
257
362
dpms->priv->on_battery = !xfpm_adapter_get_present (dpms->priv->adapter);
258
363
xfpm_dpms_refresh (dpms);