Put the whole vtable in backend_list

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui
2019-03-07 21:08:37 +00:00
parent 7e3976947b
commit f2aeb848ec
5 changed files with 45 additions and 30 deletions

View File

@ -838,7 +838,8 @@ void configure_root(session_t *ps, int width, int height) {
if (has_root_change) {
ps->backend_data->ops->root_change(ps->backend_data, ps);
} else {
ps->backend_data = backend_list[ps->o.backend](ps);
ps->backend_data = backend_list[ps->o.backend]->init(ps);
ps->backend_data->ops = backend_list[ps->o.backend];
if (!ps->backend_data) {
log_fatal("Failed to re-initialize backend after root change, aborting...");
ps->quit = true;
@ -1991,7 +1992,8 @@ redir_start(session_t *ps) {
if (ps->o.experimental_backends) {
// Reinitialize win_data
ps->backend_data = backend_list[ps->o.backend](ps);
ps->backend_data = backend_list[ps->o.backend]->init(ps);
ps->backend_data->ops = backend_list[ps->o.backend];
if (!ps->backend_data) {
log_fatal("Failed to initialize backend, aborting...");
ps->quit = true;
@ -2721,6 +2723,13 @@ session_init(int argc, char **argv, Display *dpy, const char *config_file,
}
}
if (ps->o.experimental_backends) {
if (ps->o.monitor_repaint && !backend_list[ps->o.backend]->fill_rectangle) {
log_warn("--monitor-repaint is not supported by the backend, disabling");
ps->o.monitor_repaint = false;
}
}
// Initialize software optimization
if (ps->o.sw_opti)
ps->o.sw_opti = swopti_init(ps);