aboutsummaryrefslogtreecommitdiffstats
path: root/src/calcurse.h
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2012-06-27 11:31:08 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2012-06-30 14:34:36 +0200
commit7a75415a619bd6698f45ec24f696f7b9dbb3752c (patch)
tree90a8c32c6def32e16e2454cb39e8b857dabe1062 /src/calcurse.h
parent81d97315c7dad26edf1dcfba849d57c3299e0f6b (diff)
downloadcalcurse-7a75415a619bd6698f45ec24f696f7b9dbb3752c.tar.gz
calcurse-7a75415a619bd6698f45ec24f696f7b9dbb3752c.zip
Implement a cache for the monthly view
Add a very simple cache, which is used to store the days that contain an event or an appointment. This makes redrawing and browsing the calendar panel much faster. The cache has a size of 31 integers (which is equivalent to 124 bytes on a 32 bit system and 248 bytes on a 64 bit system) and invalidates itself if the current month has changed. If an item is added/changed/removed, the cache needs to be invalidated manually by calling calendar_monthly_view_cache_set_invalid(). Note that this will always invalidate the whole cache, even if only one item at the last day of the month was removed. This is a trade-off between simplicity and efficiency. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
Diffstat (limited to 'src/calcurse.h')
-rw-r--r--src/calcurse.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/calcurse.h b/src/calcurse.h
index b21cd95..25bb780 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -144,6 +144,8 @@
#define DAYINSEC (DAYINMIN * MININSEC)
#define HOURINSEC (HOURINMIN * MININSEC)
+#define MAXDAYSPERMONTH 31
+
/* Calendar window. */
#define CALHEIGHT 12
@@ -629,6 +631,7 @@ void calendar_store_current_date(struct date *);
void calendar_init_slctd_day(void);
struct date *calendar_get_slctd_day(void);
long calendar_get_slctd_day_sec(void);
+void calendar_monthly_view_cache_set_invalid(void);
void calendar_update_panel(struct window *);
void calendar_goto_today(void);
void calendar_change_day(int);