gnome-control-center/typing-break/Makefile.am
Jens Granseuer 543251c2c6 [typing-break] Reset timer after suspend
This patch does 2 things:
1) Defines a DrwTimer that we use instead of GTimer. This is just a thin
wrapper around g_get_current_time, and it means we can accurately track
typing/idle periods based on real-world wall-clock time, which GTimer is
apparently not intended to do.

2) The typing monitor has some complicated state handling where it transitions
between an IDLE state and a TYPING state. This transition is based on running a
callback once per second, and checking whether any keystrokes have been
recorded since the last time the callback was called. The actual idle *time* is
tracked separately, independently of these two states, but only when we are in
the IDLE *state* was the idle *time* checked to see if we should reset the
break timer. This leads to a race condition -- if we suspend while in the
TYPING state, then eventually we will wake up, notice that no key press has
happened in the last second, *reset the idle timer*, transition to the IDLE
state, and then check the amount of time on the idle timer. We will thus never
notice the amount of time that the computer was suspended.

I considered making the IDLE/TYPING transition code smarter, but it turns out
the desired behavior for the two states is entirely identical anyway, so rather
than adding more complexity to this pointless code, I just diked it out and
replaced them both by a single state called RUNNING.

Closes bug #430797.
2009-11-11 19:39:57 +01:00

53 lines
1.5 KiB
Makefile

bin_PROGRAMS = gnome-typing-monitor
gnome_typing_monitor_SOURCES = \
main.c \
drwright.c \
drwright.h \
drw-break-window.c \
drw-break-window.h \
drw-monitor.c \
drw-monitor.h \
drw-utils.c \
drw-utils.h \
drw-selection.c \
drw-selection.h \
drw-timer.c \
drw-timer.h
gnome_typing_monitor_CPPFLAGS = \
-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
-DIMAGEDIR=\"$(pkgdatadir)/pixmaps\" \
$(AM_CPPFLAGS)
gnome_typing_monitor_CFLAGS = \
@TYPING_CFLAGS@ \
$(AM_CFLAGS)
gnome_typing_monitor_LDADD = @TYPING_LIBS@ @SCREENSAVER_LIBS@
if HAVE_LIBCANBERRA_GTK
gnome_typing_monitor_CFLAGS += -DHAVE_CANBERRA_GTK @LIBCANBERRA_GTK_CFLAGS@
gnome_typing_monitor_LDADD += @LIBCANBERRA_GTK_LIBS@
endif
imagedir = $(pkgdatadir)/pixmaps
dist_image_DATA = bar.png bar-red.png bar-green.png bar-disabled.png ocean-stripes.png
# Themeable application icon
icondir = $(datadir)/icons/hicolor/48x48/apps
dist_icon_DATA = typing-monitor.png
svgicondir = $(datadir)/icons/hicolor/scalable/apps
dist_svgicon_DATA = typing-monitor.svg
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
install-data-hook: update-icon-cache
uninstall-hook: update-icon-cache
update-icon-cache:
@-if test -z "$(DESTDIR)"; then \
echo "Updating Gtk icon cache."; \
$(gtk_update_icon_cache); \
else \
echo "*** Icon cache not updated. After (un)install, run this:"; \
echo "*** $(gtk_update_icon_cache)"; \
fi
-include $(top_srcdir)/git.mk