Improvement: Separate GLX parts from session_t & Attempt to fix #217

- Separate GLX parts from session_t into glx_session_t.

- Add --rererdir-on-root-change and --glx-reinit-on-root-change, as
  possible solutions for #217. Thanks to jlindgren90 for reporting.
This commit is contained in:
Richard Grenville
2014-07-28 12:50:15 +08:00
parent 4e8ccea252
commit 234e3e8cda
5 changed files with 290 additions and 185 deletions

View File

@ -270,7 +270,7 @@ free_reg_data(reg_data_t *pregd) {
*/
static inline void
free_paint(session_t *ps, paint_t *ppaint) {
free_texture(ps, &ppaint->ptex);
free_paint_glx(ps, ppaint);
free_picture(ps, &ppaint->pict);
free_pixmap(ps, &ppaint->pixmap);
}
@ -289,6 +289,7 @@ free_wpaint(session_t *ps, win *w) {
*/
static inline void
free_win_res(session_t *ps, win *w) {
free_win_res_glx(ps, w);
free_region(ps, &w->extents);
free_paint(ps, &w->paint);
free_region(ps, &w->border_size);
@ -299,9 +300,6 @@ free_win_res(session_t *ps, win *w) {
free(w->class_instance);
free(w->class_general);
free(w->role);
#ifdef CONFIG_VSYNC_OPENGL_GLSL
free_glx_bc(ps, &w->glx_blur_cache);
#endif
}
/**
@ -1224,10 +1222,10 @@ swopti_handle_timeout(session_t *ps, struct timeval *ptv);
static inline bool
ensure_glx_context(session_t *ps) {
// Create GLX context
if (!ps->glx_context)
if (!glx_has_context(ps))
glx_init(ps, false);
return ps->glx_context;
return ps->psglx->context;
}
#endif
@ -1274,7 +1272,7 @@ init_alpha_picts(session_t *ps);
static bool
init_dbe(session_t *ps);
static void
static bool
init_overlay(session_t *ps);
static void