drm-timeline: Add meta_drm_timeline_is_signaled
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>
This commit is contained in:
parent
12d12eb278
commit
a3515eecb6
@ -249,6 +249,30 @@ end:
|
|||||||
return FALSE;
|
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
|
static void
|
||||||
meta_drm_timeline_finalize (GObject *object)
|
meta_drm_timeline_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
|
@ -45,3 +45,8 @@ gboolean meta_drm_timeline_set_sync_point (MetaDrmTimeline *timeline,
|
|||||||
uint64_t sync_point,
|
uint64_t sync_point,
|
||||||
int sync_fd,
|
int sync_fd,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gboolean meta_drm_timeline_is_signaled (MetaDrmTimeline *timeline,
|
||||||
|
uint64_t sync_point,
|
||||||
|
gboolean *is_signaled,
|
||||||
|
GError **error);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user