head->pixel_buffer = ply_pixel_buffer_new (head->area.width, head->area.height);
+ ply_trace ("Creating %dx%d renderer head", head->area.width, head->area.height);
ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL,
0.0, 0.0, 0.0, 1.0);
static void
ply_renderer_head_free (ply_renderer_head_t *head)
{
+ ply_trace ("freeing %dx%d renderer head", head->area.width, head->area.height);
ply_pixel_buffer_free (head->pixel_buffer);
drmModeFreeConnector (head->connector);
free (head);
assert (head != NULL);
+ ply_trace ("Creating buffer for %dx%d renderer head", head->area.width, head->area.height);
head->scan_out_buffer_id =
backend->driver_interface->create_buffer (backend->driver,
head->area.width, head->area.height,
if (head->scan_out_buffer_id == 0)
return false;
+ ply_trace ("Mapping buffer for %dx%d renderer head", head->area.width, head->area.height);
if (!backend->driver_interface->map_buffer (backend->driver,
head->scan_out_buffer_id))
{
*/
ply_renderer_head_redraw (backend, head);
+ ply_trace ("Setting scan out buffer of %dx%d head to our buffer",
+ head->area.width, head->area.height);
if (!ply_renderer_head_set_scan_out_buffer (backend, head,
head->scan_out_buffer_id))
{
ply_renderer_head_unmap (ply_renderer_backend_t *backend,
ply_renderer_head_t *head)
{
+ ply_trace ("unmapping %dx%d renderer head", head->area.width, head->area.height);
backend->driver_interface->unmap_buffer (backend->driver,
head->scan_out_buffer_id);
else
backend->device_name = strdup ("/dev/dri/card0");
+ ply_trace ("creating renderer backend for device", backend->device_name);
+
backend->device_fd = -1;
backend->loop = ply_event_loop_get_default ();
static void
destroy_backend (ply_renderer_backend_t *backend)
{
+ ply_trace ("destroying renderer backend for device", backend->device_name);
free_heads (backend);
ply_list_free (backend->heads);
{
ply_list_node_t *node;
+ ply_trace ("taking master and scanning out");
backend->is_active = true;
drmSetMaster (backend->device_fd);
int device_fd;
driver_name = find_driver_for_device (backend->device_name);
+ ply_trace ("Attempting to load driver '%s'", driver_name);
device_fd = drmOpen (driver_name, NULL);
if (device_fd < 0)
{
+ ply_trace ("drmOpen failed");
free (driver_name);
return false;
}
if (backend->driver == NULL)
return;
+ ply_trace ("unloading driver");
assert (backend->driver_interface != NULL);
backend->driver_interface->destroy_driver (backend->driver);
static void
close_device (ply_renderer_backend_t *backend)
{
+ ply_trace ("closing device");
+
free_heads (backend);
ply_terminal_stop_watching_for_active_vt_change (backend->terminal,
{
ply_region_t *region;
+ ply_trace ("Redrawing %dx%d renderer head", head->area.width, head->area.height);
+
region = ply_pixel_buffer_get_updated_areas (head->pixel_buffer);
ply_region_add_rectangle (region, &head->area);