wpe: Reduce gpointer usage in ThreadedView
Those gpointers were introduced when we had to support some old WPE API, no need for them anymore. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8413>
This commit is contained in:
parent
9adc7bd9f0
commit
1baa10ed07
@ -815,32 +815,39 @@ void GstWPEThreadedView::setDrawBackground(gboolean drawsBackground)
|
|||||||
webkit_web_view_set_background_color(webkit.view, &color);
|
webkit_web_view_set_background_color(webkit.view, &color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GstWPEThreadedView::releaseImage(gpointer imagePointer)
|
void GstWPEThreadedView::releaseImage(struct wpe_fdo_egl_exported_image * image)
|
||||||
{
|
{
|
||||||
s_view->dispatch([&]() {
|
s_view->dispatch([&]() {
|
||||||
GST_TRACE("Dispatch release exported image %p", imagePointer);
|
GST_TRACE("Dispatch release exported image %p", image);
|
||||||
wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(wpe.exportable,
|
wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(wpe.exportable, image);
|
||||||
static_cast<struct wpe_fdo_egl_exported_image*>(imagePointer));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ImageContext {
|
struct ImageContext {
|
||||||
GstWPEThreadedView* view;
|
GstWPEThreadedView* view;
|
||||||
gpointer image;
|
struct wpe_fdo_egl_exported_image *image;
|
||||||
};
|
};
|
||||||
|
|
||||||
void GstWPEThreadedView::handleExportedImage(gpointer image)
|
void GstWPEThreadedView::s_releaseImage(GstEGLImage *image, gpointer data) {
|
||||||
|
ImageContext *context = static_cast<ImageContext *>(data);
|
||||||
|
context->view->releaseImage(context->image);
|
||||||
|
g_free(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GstWPEThreadedView::handleExportedImage(struct wpe_fdo_egl_exported_image * image)
|
||||||
{
|
{
|
||||||
ImageContext *imageContext = g_new(ImageContext, 1);
|
ImageContext *imageContext = g_new(ImageContext, 1);
|
||||||
imageContext->view = this;
|
imageContext->view = this;
|
||||||
imageContext->image = static_cast<gpointer>(image);
|
imageContext->image = image;
|
||||||
EGLImageKHR eglImage = wpe_fdo_egl_exported_image_get_egl_image(static_cast<struct wpe_fdo_egl_exported_image*>(image));
|
EGLImageKHR eglImage = wpe_fdo_egl_exported_image_get_egl_image(image);
|
||||||
|
|
||||||
auto* gstImage = gst_egl_image_new_wrapped(gst.context, eglImage, GST_GL_RGBA, imageContext, s_releaseImage);
|
auto *gstImage = gst_egl_image_new_wrapped(gst.context, eglImage, GST_GL_RGBA, imageContext,
|
||||||
|
s_releaseImage);
|
||||||
{
|
{
|
||||||
GMutexHolder lock(images_mutex);
|
GMutexHolder lock(images_mutex);
|
||||||
|
|
||||||
GST_TRACE("EGLImage %p wrapped in GstEGLImage %" GST_PTR_FORMAT, eglImage, gstImage);
|
GST_TRACE("EGLImage %p wrapped in GstEGLImage %" GST_PTR_FORMAT, eglImage,
|
||||||
|
gstImage);
|
||||||
gst_clear_mini_object((GstMiniObject **)&egl.pending);
|
gst_clear_mini_object((GstMiniObject **)&egl.pending);
|
||||||
egl.pending = gstImage;
|
egl.pending = gstImage;
|
||||||
|
|
||||||
@ -857,9 +864,8 @@ void GstWPEThreadedView::releaseSHMBuffer(gpointer data)
|
|||||||
{
|
{
|
||||||
SHMBufferContext* context = static_cast<SHMBufferContext*>(data);
|
SHMBufferContext* context = static_cast<SHMBufferContext*>(data);
|
||||||
s_view->dispatch([&]() {
|
s_view->dispatch([&]() {
|
||||||
auto* buffer = static_cast<struct wpe_fdo_shm_exported_buffer*>(context->buffer);
|
GST_TRACE("Dispatch release exported buffer %p", context->buffer);
|
||||||
GST_TRACE("Dispatch release exported buffer %p", buffer);
|
wpe_view_backend_exportable_fdo_dispatch_release_shm_exported_buffer(wpe.exportable, context->buffer);
|
||||||
wpe_view_backend_exportable_fdo_dispatch_release_shm_exported_buffer(wpe.exportable, buffer);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -910,7 +916,7 @@ struct wpe_view_backend_exportable_fdo_egl_client GstWPEThreadedView::s_exportab
|
|||||||
nullptr,
|
nullptr,
|
||||||
[](void* data, struct wpe_fdo_egl_exported_image* image) {
|
[](void* data, struct wpe_fdo_egl_exported_image* image) {
|
||||||
auto& view = *static_cast<GstWPEThreadedView*>(data);
|
auto& view = *static_cast<GstWPEThreadedView*>(data);
|
||||||
view.handleExportedImage(static_cast<gpointer>(image));
|
view.handleExportedImage(image);
|
||||||
},
|
},
|
||||||
nullptr,
|
nullptr,
|
||||||
// padding
|
// padding
|
||||||
@ -929,13 +935,6 @@ struct wpe_view_backend_exportable_fdo_client GstWPEThreadedView::s_exportableCl
|
|||||||
nullptr,
|
nullptr,
|
||||||
};
|
};
|
||||||
|
|
||||||
void GstWPEThreadedView::s_releaseImage(GstEGLImage* image, gpointer data)
|
|
||||||
{
|
|
||||||
ImageContext* context = static_cast<ImageContext*>(data);
|
|
||||||
context->view->releaseImage(context->image);
|
|
||||||
g_free (context);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct wpe_view_backend* GstWPEThreadedView::backend() const
|
struct wpe_view_backend* GstWPEThreadedView::backend() const
|
||||||
{
|
{
|
||||||
return wpe.exportable ? wpe_view_backend_exportable_fdo_get_view_backend(wpe.exportable) : nullptr;
|
return wpe.exportable ? wpe_view_backend_exportable_fdo_get_view_backend(wpe.exportable) : nullptr;
|
||||||
|
@ -65,7 +65,7 @@ public:
|
|||||||
void notifyLoadFinished();
|
void notifyLoadFinished();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void handleExportedImage(gpointer);
|
void handleExportedImage(struct wpe_fdo_egl_exported_image*);
|
||||||
void handleExportedBuffer(struct wpe_fdo_shm_exported_buffer*);
|
void handleExportedBuffer(struct wpe_fdo_shm_exported_buffer*);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -73,7 +73,7 @@ private:
|
|||||||
void frameComplete();
|
void frameComplete();
|
||||||
void loadUriUnlocked(const gchar*);
|
void loadUriUnlocked(const gchar*);
|
||||||
|
|
||||||
void releaseImage(gpointer);
|
void releaseImage(struct wpe_fdo_egl_exported_image *);
|
||||||
void releaseSHMBuffer(gpointer);
|
void releaseSHMBuffer(gpointer);
|
||||||
static void s_releaseSHMBuffer(gpointer);
|
static void s_releaseSHMBuffer(gpointer);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user