renderer: nullify device if open fails

Since commit e4f86e3c we query the renderer device straight from
the renderer plugin. Unfortunately, we continue to use that
device name even after the renderer fails to open and the plugin
gets unloaded.

This commit changes the code to go back to using the original
device name in that scenario.
This commit is contained in:
Ray Strode 2018-05-31 13:22:54 -04:00
parent 43cfbb2a8b
commit bf560986f0

View file

@ -51,6 +51,7 @@ struct _ply_renderer
ply_renderer_type_t type;
char *device_name;
char *plugin_device_name;
ply_terminal_t *terminal;
uint32_t input_source_is_open : 1;
@ -100,6 +101,9 @@ ply_renderer_free (ply_renderer_t *renderer)
const char *
ply_renderer_get_device_name (ply_renderer_t *renderer)
{
if (renderer->plugin_device_name != NULL)
return renderer->plugin_device_name;
return renderer->device_name;
}
@ -156,8 +160,8 @@ ply_renderer_load_plugin (ply_renderer_t *renderer,
}
if (renderer->plugin_interface->get_device_name != NULL) {
free (renderer->device_name);
renderer->device_name = strdup (renderer->plugin_interface->get_device_name (renderer->backend));
free (renderer->plugin_device_name);
renderer->plugin_device_name = strdup (renderer->plugin_interface->get_device_name (renderer->backend));
}
return true;
@ -170,6 +174,9 @@ ply_renderer_unload_plugin (ply_renderer_t *renderer)
assert (renderer->plugin_interface != NULL);
assert (renderer->module_handle != NULL);
free (renderer->plugin_device_name);
renderer->plugin_device_name = NULL;
ply_close_module (renderer->module_handle);
renderer->plugin_interface = NULL;
renderer->module_handle = NULL;