// Take a look at the license at the top of the repository in the LICENSE file. use std::ptr; use glib::{prelude::*, translate::*}; use gst::ContextRef; use crate::{ffi, GLDisplay}; pub trait ContextGLExt { #[doc(alias = "get_gl_display")] #[doc(alias = "gst_context_get_gl_display")] fn gl_display(&self) -> Option; #[doc(alias = "gst_context_set_gl_display")] fn set_gl_display<'a, T: IsA>(&self, display: impl Into>); } impl ContextGLExt for ContextRef { fn gl_display(&self) -> Option { unsafe { let mut display = ptr::null_mut(); if from_glib(ffi::gst_context_get_gl_display( self.as_mut_ptr(), &mut display, )) { Some(from_glib_full(display)) } else { None } } } fn set_gl_display<'a, T: IsA>(&self, display: impl Into>) { unsafe { ffi::gst_context_set_gl_display( self.as_mut_ptr(), display.into().map(|d| d.as_ref()).to_glib_none().0, ); } } }