Skip to content

Commit

Permalink
drm-timeline: Add meta_drm_timeline_is_signaled
Browse files Browse the repository at this point in the history
v2: (Doğukan Korkmaztürk)
* Use drmSyncobjQuery instead of drmSyncobjTimelineWait.
* Fix libdrm function name in error message.
v3:
* Add separate boolean is_signaled out parameter. (Sebastian Wick)
* Use g_strerror instead of strerror.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3876>
  • Loading branch information
Michel Dänzer authored and Marge Bot committed Aug 30, 2024
1 parent 12d12eb commit a3515ee
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/common/meta-drm-timeline.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,30 @@ meta_drm_timeline_set_sync_point (MetaDrmTimeline *timeline,
return FALSE;
}

gboolean
meta_drm_timeline_is_signaled (MetaDrmTimeline *timeline,
uint64_t sync_point,
gboolean *is_signaled,
GError **error)
{
uint64_t latest_signaled_point;
int ret;

ret = drmSyncobjQuery (timeline->drm, &timeline->drm_syncobj,
&latest_signaled_point, 1);
if (ret < 0)
{
g_set_error (error,
G_IO_ERROR,
G_IO_ERROR_FAILED,
"drmSyncobjQuery failed: %s", g_strerror (errno));
return FALSE;
}

*is_signaled = latest_signaled_point >= sync_point;
return TRUE;
}

static void
meta_drm_timeline_finalize (GObject *object)
{
Expand Down
5 changes: 5 additions & 0 deletions src/common/meta-drm-timeline.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,8 @@ gboolean meta_drm_timeline_set_sync_point (MetaDrmTimeline *timeline,
uint64_t sync_point,
int sync_fd,
GError **error);

gboolean meta_drm_timeline_is_signaled (MetaDrmTimeline *timeline,
uint64_t sync_point,
gboolean *is_signaled,
GError **error);

0 comments on commit a3515ee

Please sign in to comment.