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.
53 lines
1.5 KiB
Makefile
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
|