summaryrefslogtreecommitdiff
path: root/src/overlay.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@gnugeneration.com>2016-08-28 00:36:53 -0700
committerVito Caputo <vcaputo@gnugeneration.com>2016-09-09 14:14:31 -0700
commit4642216f70dd98134a79f9299b7ca4bc876649c7 (patch)
treebdf9fd892bc54a2f2a678a9828c6af9d9fc8bed2 /src/overlay.h
parente99f5ac1293a0ae1f498bc4c73c4c04e4edb8665 (diff)
*: refactor all the things
Long overdue house cleaning. The addition of compositing/monitoring overlays in vwm3 pushed vwm well past what is a reasonable size for a simple thousand line file. This is a first step towards restoring sanity in the code, but no behavioral differences are intended, this is mostly just shuffling around and organizing code. I expect some performance regressions initially, follow-on commits will make more improvements to that end as the dust settles.
Diffstat (limited to 'src/overlay.h')
-rw-r--r--src/overlay.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/overlay.h b/src/overlay.h
new file mode 100644
index 0000000..94e2dca
--- /dev/null
+++ b/src/overlay.h
@@ -0,0 +1,36 @@
+#ifndef _OVERLAY_H
+#define _OVERLAY_H
+
+#include <X11/Xlib.h>
+#include <X11/extensions/Xrender.h>
+
+typedef struct _vwm_t vwm_t;
+typedef struct _vwm_xwindow_t vwm_xwindow_t;
+
+/* everything needed by the per-window overlay's context */
+typedef struct _vwm_overlay_t {
+ Pixmap text_pixmap; /* pixmap for overlayed text (kept around for XDrawText usage) */
+ Picture text_picture; /* picture representation of text_pixmap */
+ Picture shadow_picture; /* text shadow layer */
+ Picture grapha_picture; /* graph A layer */
+ Picture graphb_picture; /* graph B layer */
+ Picture tmp_picture; /* 1 row worth of temporary picture space */
+ Picture picture; /* overlay picture derived from the pixmap, for render compositing */
+ int width; /* current width of the overlay */
+ int height; /* current height of the overlay */
+ int phase; /* current position within the (horizontally scrolling) graphs */
+ int heirarchy_end; /* row where the process heirarchy currently ends */
+ int snowflakes_cnt; /* count of snowflaked rows (reset to zero to truncate snowflakes display) */
+ int gen_last_composed; /* the last composed vmon generation */
+} vwm_overlay_t;
+
+int vwm_overlay_xwin_composed_height(vwm_t *vwm, vwm_xwindow_t *xwin);
+void vwm_overlay_xwin_reset_snowflakes(vwm_t *vwm, vwm_xwindow_t *xwin);
+void vwm_overlay_xwin_create(vwm_t *vwm, vwm_xwindow_t *xwin);
+void vwm_overlay_xwin_destroy(vwm_t *vwm, vwm_xwindow_t *xwin);
+void vwm_overlay_xwin_compose(vwm_t *vwm, vwm_xwindow_t *xwin);
+void vwm_overlay_rate_increase(vwm_t *vwm);
+void vwm_overlay_rate_decrease(vwm_t *vwm);
+void vwm_overlay_update(vwm_t *vwm, int *desired_delay);
+
+#endif
© All Rights Reserved