Skip to content

Commit 4817ee9

Browse files
fxriraveit65
authored andcommitted
Use GtkApplication to inhibit the screensaver during slideshows
Realized in a similar fashion as in Evince and Totem. https://bugzilla.gnome.org/show_bug.cgi?id=684581 origin commit: https://gitlab.gnome.org/GNOME/eog/commit/e8b50ab
1 parent 9e687fa commit 4817ee9

File tree

4 files changed

+37
-44
lines changed

4 files changed

+37
-44
lines changed

src/Makefile.am

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ endif
44

55
toolbar_LIB = $(top_builddir)/cut-n-paste/toolbar-editor/libtoolbareditor.la
66

7-
screensaver_LIB = $(top_builddir)/cut-n-paste/totem-screensaver/libtotemscrsaver.la
8-
97
noinst_LTLIBRARIES = libeom.la
108

119
bin_PROGRAMS = eom
@@ -128,7 +126,6 @@ endif HAVE_EXEMPI
128126
libeom_la_CPPFLAGS = \
129127
-I$(top_srcdir)/jpegutils \
130128
-I$(top_srcdir)/cut-n-paste/toolbar-editor \
131-
-I$(top_srcdir)/cut-n-paste/totem-screensaver \
132129
-DG_LOG_DOMAIN=\"EOM\" \
133130
-DEOM_DATA_DIR=\""$(pkgdatadir)"\" \
134131
-DEOM_LOCALE_DIR=\""$(datadir)/locale"\" \
@@ -154,7 +151,6 @@ eom_SOURCES = main.c
154151

155152
eom_CFLAGS = \
156153
-I$(top_srcdir)/cut-n-paste/toolbar-editor \
157-
-I$(top_srcdir)/cut-n-paste/totem-screensaver \
158154
$(EOM_CFLAGS) \
159155
-DEOM_DATA_DIR=\""$(pkgdatadir)"\" \
160156
-DEOM_LOCALE_DIR=\""$(datadir)/locale"\" \
@@ -165,7 +161,6 @@ eom_LDADD = \
165161
$(EOM_LIBS) \
166162
$(LIBJPEG) \
167163
$(toolbar_LIB) \
168-
$(screensaver_LIB) \
169164
$(jpeg_LIB) \
170165
$(INTROSPECTION_LIBS)
171166

src/eom-application.c

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
#include "eom-application.h"
3333
#include "eom-util.h"
3434

35-
#include "totem-scrsaver.h"
36-
3735
#include <string.h>
3836
#include <glib.h>
3937
#include <glib/gi18n.h>
@@ -485,34 +483,6 @@ eom_application_reset_toolbars_model (EomApplication *app)
485483
EGG_TB_MODEL_NOT_REMOVABLE);
486484
}
487485

488-
/**
489-
* eom_application_screensaver_enable:
490-
* @application: an #EomApplication.
491-
*
492-
* Enables the screensaver. Usually necessary after a call to
493-
* eom_application_screensaver_disable().
494-
**/
495-
void
496-
eom_application_screensaver_enable (EomApplication *application)
497-
{
498-
if (application->scr_saver)
499-
totem_scrsaver_enable (application->scr_saver);
500-
}
501-
502-
/**
503-
* eom_application_screensaver_disable:
504-
* @application: an #EomApplication.
505-
*
506-
* Disables the screensaver. Useful when the application is in fullscreen or
507-
* similar mode.
508-
**/
509-
void
510-
eom_application_screensaver_disable (EomApplication *application)
511-
{
512-
if (application->scr_saver)
513-
totem_scrsaver_disable (application->scr_saver);
514-
}
515-
516486
static void
517487
eom_application_load_accelerators (void)
518488
{

src/eom-application.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
#include "eom-plugin-engine.h"
3030
#include "egg-toolbars-model.h"
3131

32-
#include "totem-scrsaver.h"
33-
3432
#include <glib.h>
3533
#include <glib-object.h>
3634

@@ -57,7 +55,6 @@ struct _EomApplication {
5755

5856
EomPluginEngine *plugin_engine;
5957

60-
TotemScrsaver *scr_saver;
6158
EomStartupFlags flags;
6259
};
6360

@@ -98,10 +95,6 @@ void eom_application_save_toolbars_model (EomApplication *applicati
9895

9996
void eom_application_reset_toolbars_model (EomApplication *app);
10097

101-
void eom_application_screensaver_enable (EomApplication *application);
102-
103-
void eom_application_screensaver_disable (EomApplication *application);
104-
10598
G_END_DECLS
10699

107100
#endif /* __EOM_APPLICATION_H__ */

src/eom-window.c

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ struct _EomWindowPrivate {
161161
gint slideshow_switch_timeout;
162162
GSource *slideshow_switch_source;
163163

164+
guint fullscreen_idle_inhibit_cookie;
165+
164166
guint recent_menu_id;
165167

166168
EomJob *load_job;
@@ -1972,6 +1974,37 @@ update_ui_visibility (EomWindow *window)
19721974
}
19731975
}
19741976

1977+
static void
1978+
eom_window_inhibit_screensaver (EomWindow *window)
1979+
{
1980+
EomWindowPrivate *priv = window->priv;
1981+
1982+
g_return_if_fail (priv->fullscreen_idle_inhibit_cookie == 0);
1983+
1984+
eom_debug (DEBUG_WINDOW);
1985+
1986+
window->priv->fullscreen_idle_inhibit_cookie =
1987+
gtk_application_inhibit (GTK_APPLICATION (EOM_APP),
1988+
GTK_WINDOW (window),
1989+
GTK_APPLICATION_INHIBIT_IDLE,
1990+
_("Viewing a slideshow"));
1991+
}
1992+
1993+
static void
1994+
eom_window_uninhibit_screensaver (EomWindow *window)
1995+
{
1996+
EomWindowPrivate *priv = window->priv;
1997+
1998+
if (G_UNLIKELY (priv->fullscreen_idle_inhibit_cookie == 0))
1999+
return;
2000+
2001+
eom_debug (DEBUG_WINDOW);
2002+
2003+
gtk_application_uninhibit (GTK_APPLICATION (EOM_APP),
2004+
priv->fullscreen_idle_inhibit_cookie);
2005+
priv->fullscreen_idle_inhibit_cookie = 0;
2006+
}
2007+
19752008
static void
19762009
eom_window_run_fullscreen (EomWindow *window, gboolean slideshow)
19772010
{
@@ -2057,7 +2090,7 @@ eom_window_run_fullscreen (EomWindow *window, gboolean slideshow)
20572090
gtk_window_fullscreen (GTK_WINDOW (window));
20582091
eom_window_update_fullscreen_popup (window);
20592092

2060-
eom_application_screensaver_disable (EOM_APP);
2093+
eom_window_inhibit_screensaver (window);
20612094

20622095
/* Update both actions as we could've already been in one those modes */
20632096
eom_window_update_slideshow_action (window);
@@ -2122,7 +2155,7 @@ eom_window_stop_fullscreen (EomWindow *window, gboolean slideshow)
21222155

21232156
eom_scroll_view_show_cursor (EOM_SCROLL_VIEW (priv->view));
21242157

2125-
eom_application_screensaver_enable (EOM_APP);
2158+
eom_window_uninhibit_screensaver (window);
21262159
}
21272160

21282161
static void
@@ -4542,6 +4575,7 @@ eom_window_init (EomWindow *window)
45424575
window->priv->slideshow_loop = FALSE;
45434576
window->priv->slideshow_switch_timeout = 0;
45444577
window->priv->slideshow_switch_source = NULL;
4578+
window->priv->fullscreen_idle_inhibit_cookie = 0;
45454579

45464580
gtk_window_set_geometry_hints (GTK_WINDOW (window),
45474581
GTK_WIDGET (window),
@@ -4666,6 +4700,7 @@ eom_window_dispose (GObject *object)
46664700
}
46674701

46684702
slideshow_clear_timeout (window);
4703+
eom_window_uninhibit_screensaver (window);
46694704

46704705
g_signal_handlers_disconnect_by_func (gtk_recent_manager_get_default (),
46714706
G_CALLBACK (eom_window_recent_manager_changed_cb),

0 commit comments

Comments
 (0)