uint32_t input_source_is_open : 1;
uint32_t is_mapped : 1;
+ uint32_t is_active : 1;
};
typedef const ply_renderer_plugin_interface_t *
{ PLY_RENDERER_TYPE_NONE, NULL }
};
+ renderer->is_active = false;
for (i = 0; known_plugins[i].type != PLY_RENDERER_TYPE_NONE; i++) {
if (renderer->type == known_plugins[i].type ||
renderer->type == PLY_RENDERER_TYPE_AUTO)
- if (ply_renderer_open_plugin (renderer, known_plugins[i].path))
- return true;
+ if (ply_renderer_open_plugin (renderer, known_plugins[i].path)) {
+ renderer->is_active = true;
+ goto out;
+ }
}
ply_trace ("could not find suitable rendering plugin");
- return false;
+out:
+ return renderer->is_active;
}
void
{
ply_renderer_unmap_from_device (renderer);
ply_renderer_close_device (renderer);
+ renderer->is_active = false;
}
void
{
assert (renderer->plugin_interface != NULL);
- return renderer->plugin_interface->activate (renderer->backend);
+ if (renderer->is_active)
+ return;
+
+ renderer->plugin_interface->activate (renderer->backend);
+ renderer->is_active = true;
}
void
return renderer->plugin_interface->deactivate (renderer->backend);
}
+bool
+ply_renderer_is_active (ply_renderer_t *renderer)
+{
+ return renderer->is_active;
+}
+
ply_list_t *
ply_renderer_get_heads (ply_renderer_t *renderer)
{
void ply_renderer_close (ply_renderer_t *renderer);
void ply_renderer_activate (ply_renderer_t *renderer);
void ply_renderer_deactivate (ply_renderer_t *renderer);
+bool ply_renderer_is_active (ply_renderer_t *renderer);
const char *ply_renderer_get_device_name (ply_renderer_t *renderer);
ply_list_t *ply_renderer_get_heads (ply_renderer_t *renderer);
ply_pixel_buffer_t *ply_renderer_get_buffer_for_head (ply_renderer_t *renderer,
ply_list_t *text_displays;
ply_list_t *pixel_displays;
- uint32_t renderer_active : 1;
uint32_t keyboard_active : 1;
};
ply_renderer_free (renderer);
seat->renderer = NULL;
- seat->renderer_active = false;
if (renderer_type != PLY_RENDERER_TYPE_AUTO)
return false;
} else {
seat->renderer = renderer;
- seat->renderer_active = true;
}
}
void
ply_seat_deactivate_renderer (ply_seat_t *seat)
{
- if (!seat->renderer_active)
- return;
-
- seat->renderer_active = false;
-
if (seat->renderer == NULL)
return;
ply_trace ("activating renderer");
ply_renderer_activate (seat->renderer);
-
- seat->renderer_active = true;
}
void