1
0
Fork 0

onscreen/native: Skip try_post_latest_swap if shutting down

Otherwise we could get:

  meta_kms_prepare_shutdown ->
  flush_callbacks ->
  ... ->
  try_post_latest_swap ->
  post and queue more callbacks

So later in shutdown those callbacks would trigger an assertion failure
in meta_kms_impl_device_atomic_finalize:

  g_hash_table_size (impl_device_atomic->page_flip_datas) == 0

Signed-off-by: Mingi Sung <sungmg@saltyming.net>
This commit is contained in:
Daniel van Vugt 2022-05-11 16:00:32 +08:00 committed by Mingi Sung
parent d9a6cc334f
commit 4995fa2a48
Signed by: sungmg
GPG key ID: 41BAFD6FFD8036C5

View file

@ -1497,6 +1497,8 @@ try_post_latest_swap (CoglOnscreen *onscreen)
MetaRendererNative *renderer_native = renderer_gpu_data->renderer_native;
MetaRenderer *renderer = META_RENDERER (renderer_native);
MetaBackend *backend = meta_renderer_get_backend (renderer);
MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
MetaKms *kms = meta_backend_native_get_kms (backend_native);
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
@ -1511,7 +1513,8 @@ try_post_latest_swap (CoglOnscreen *onscreen)
int sync_fd;
COGL_TRACE_SCOPED_ANCHOR (MetaRendererNativePostKmsUpdate);
if (onscreen_native->next_frame == NULL)
if (onscreen_native->next_frame == NULL ||
meta_kms_is_shutting_down (kms))
return;
power_save_mode = meta_monitor_manager_get_power_save_mode (monitor_manager);