device-manager: activate new renderers after adding to renderers list

When a new renderer gets created, we should activate it, if the device
manager is already active.

At the moment we call create_pixel_displays_for_renderer which would
implicitly activate it (from a callback), except we call it one line
too early, so the renderer isn't in the list of known renderers yet.

This commit swaps the two lines and also adds an explicit renderer
activation for clarity.  For symmetry it makes the same change to
keyboards that it makes to renderers.
This commit is contained in:
Ray Strode 2015-09-24 09:21:18 -04:00
parent 2c482f2350
commit 29e2763769

View file

@ -71,6 +71,8 @@ struct _ply_device_manager
uint32_t local_console_managed : 1;
uint32_t local_console_is_text : 1;
uint32_t serial_consoles_detected : 1;
uint32_t renderers_activated : 1;
uint32_t keyboards_activated : 1;
};
static void
@ -682,6 +684,12 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
create_pixel_displays_for_renderer (manager, renderer);
ply_hashtable_insert (manager->renderers, strdup (device_path), renderer);
create_pixel_displays_for_renderer (manager, renderer);
if (manager->renderers_activated) {
ply_trace ("activating renderer");
ply_renderer_activate (renderer);
}
} else if (terminal != NULL) {
keyboard = ply_keyboard_new_for_terminal (terminal);
ply_list_append_data (manager->keyboards, keyboard);
@ -699,7 +707,8 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
}
}
if (keyboard != NULL) {
if (keyboard != NULL && manager->keyboards_activated) {
ply_trace ("activating keyboards");
ply_keyboard_watch_for_input (keyboard);
}
}
@ -865,6 +874,8 @@ ply_device_manager_activate_renderers (ply_device_manager_t *manager)
(ply_hashtable_foreach_func_t *)
activate_renderer,
manager);
manager->renderers_activated = true;
}
static void
@ -882,6 +893,8 @@ ply_device_manager_deactivate_renderers (ply_device_manager_t *manager)
(ply_hashtable_foreach_func_t *)
deactivate_renderer,
manager);
manager->renderers_activated = false;
}
void
@ -902,6 +915,8 @@ ply_device_manager_activate_keyboards (ply_device_manager_t *manager)
node = next_node;
}
manager->keyboards_activated = true;
}
void
@ -922,4 +937,6 @@ ply_device_manager_deactivate_keyboards (ply_device_manager_t *manager)
node = next_node;
}
manager->keyboards_activated = false;
}