Merge branch 'drm-hotplug-fixes' into 'master'

Drm hotplug fixes

See merge request plymouth/plymouth!92
This commit is contained in:
Ray Strode 2020-03-10 23:51:41 +00:00
commit ae2fedb1eb
3 changed files with 24 additions and 16 deletions

View file

@ -52,6 +52,8 @@ struct _ply_capslock_icon
bool is_on;
};
static void ply_capslock_stop_polling (ply_capslock_icon_t *capslock_icon);
ply_capslock_icon_t *
ply_capslock_icon_new (const char *image_dir)
{
@ -74,7 +76,7 @@ ply_capslock_icon_free (ply_capslock_icon_t *capslock_icon)
return;
if (!capslock_icon->is_hidden)
ply_capslock_icon_hide (capslock_icon);
ply_capslock_stop_polling (capslock_icon);
if (capslock_icon->buffer != NULL)
ply_pixel_buffer_free (capslock_icon->buffer);
@ -121,6 +123,14 @@ on_timeout (void *user_data,
on_timeout, capslock_icon);
}
static void
ply_capslock_stop_polling (ply_capslock_icon_t *capslock_icon)
{
ply_event_loop_stop_watching_for_timeout (capslock_icon->loop,
(ply_event_loop_timeout_handler_t)
on_timeout, capslock_icon);
}
bool
ply_capslock_icon_load (ply_capslock_icon_t *capslock_icon)
{
@ -183,10 +193,8 @@ ply_capslock_icon_hide (ply_capslock_icon_t *capslock_icon)
capslock_icon->is_hidden = true;
ply_capslock_icon_draw (capslock_icon);
ply_capslock_stop_polling (capslock_icon);
ply_event_loop_stop_watching_for_timeout (capslock_icon->loop,
(ply_event_loop_timeout_handler_t)
on_timeout, capslock_icon);
capslock_icon->loop = NULL;
capslock_icon->display = NULL;
}

View file

@ -130,9 +130,6 @@ ply_keymap_icon_free (ply_keymap_icon_t *keymap_icon)
if (keymap_icon == NULL)
return;
if (!keymap_icon->is_hidden)
ply_keymap_icon_hide (keymap_icon);
ply_pixel_buffer_free (keymap_icon->icon_buffer);
ply_pixel_buffer_free (keymap_icon->keymap_buffer);

View file

@ -78,7 +78,7 @@ struct _ply_throbber
uint32_t is_stopped : 1;
};
static void ply_throbber_stop_now (ply_throbber_t *throbber);
static void ply_throbber_stop_now (ply_throbber_t *throbber, bool redraw);
ply_throbber_t *
ply_throbber_new (const char *image_dir,
@ -126,7 +126,7 @@ ply_throbber_free (ply_throbber_t *throbber)
return;
if (!throbber->is_stopped)
ply_throbber_stop_now (throbber);
ply_throbber_stop_now (throbber, false);
ply_throbber_remove_frames (throbber);
ply_array_free (throbber->frames);
@ -324,15 +324,18 @@ ply_throbber_start (ply_throbber_t *throbber,
}
static void
ply_throbber_stop_now (ply_throbber_t *throbber)
ply_throbber_stop_now (ply_throbber_t *throbber, bool redraw)
{
throbber->is_stopped = true;
ply_pixel_display_draw_area (throbber->display,
throbber->x,
throbber->y,
throbber->frame_area.width,
throbber->frame_area.height);
if (redraw) {
ply_pixel_display_draw_area (throbber->display,
throbber->x,
throbber->y,
throbber->frame_area.width,
throbber->frame_area.height);
}
if (throbber->loop != NULL) {
ply_event_loop_stop_watching_for_timeout (throbber->loop,
(ply_event_loop_timeout_handler_t)
@ -356,7 +359,7 @@ ply_throbber_stop (ply_throbber_t *throbber,
}
if (stop_trigger == NULL) {
ply_throbber_stop_now (throbber);
ply_throbber_stop_now (throbber, true);
return;
}