mirror of
https://github.com/brl/mutter.git
synced 2025-01-10 03:32:34 +00:00
screen-cast: Implement query_modifiers
This function contains a stub, which returns support for implicit modifiers, if modifiers are supported preserving the current capabilities. The stub has to be replaced with a query to the cogl renderer to support explicit modifiers. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2557>
This commit is contained in:
parent
cd84b478b4
commit
265a17e01c
@ -24,6 +24,10 @@
|
|||||||
|
|
||||||
#include <pipewire/pipewire.h>
|
#include <pipewire/pipewire.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_NATIVE_BACKEND
|
||||||
|
#include <drm_fourcc.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "backends/meta-backend-private.h"
|
#include "backends/meta-backend-private.h"
|
||||||
#include "backends/meta-remote-desktop-session.h"
|
#include "backends/meta-remote-desktop-session.h"
|
||||||
#include "backends/meta-screen-cast-session.h"
|
#include "backends/meta-screen-cast-session.h"
|
||||||
@ -56,6 +60,52 @@ meta_screen_cast_disable_dma_bufs (MetaScreenCast *screen_cast)
|
|||||||
screen_cast->disable_dma_bufs = TRUE;
|
screen_cast->disable_dma_bufs = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
meta_screen_cast_query_modifiers (MetaScreenCast *screen_cast,
|
||||||
|
CoglPixelFormat format,
|
||||||
|
uint64_t **modifiers,
|
||||||
|
int *n_modifiers)
|
||||||
|
{
|
||||||
|
MetaDbusSessionManager *session_manager =
|
||||||
|
META_DBUS_SESSION_MANAGER (screen_cast);
|
||||||
|
MetaBackend *backend =
|
||||||
|
meta_dbus_session_manager_get_backend (session_manager);
|
||||||
|
ClutterBackend *clutter_backend =
|
||||||
|
meta_backend_get_clutter_backend (backend);
|
||||||
|
CoglContext *cogl_context =
|
||||||
|
clutter_backend_get_cogl_context (clutter_backend);
|
||||||
|
CoglRenderer *cogl_renderer = cogl_context_get_renderer (cogl_context);
|
||||||
|
g_autoptr (GError) error = NULL;
|
||||||
|
bool ret;
|
||||||
|
|
||||||
|
if (screen_cast->disable_dma_bufs)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!cogl_renderer_is_dma_buf_supported (cogl_renderer))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
// TODO: query cogl_renderer for modifiers
|
||||||
|
// BEGIN stub
|
||||||
|
#ifdef HAVE_NATIVE_BACKEND
|
||||||
|
uint64_t *modifier_list;
|
||||||
|
|
||||||
|
modifier_list = calloc (1, sizeof (uint64_t));
|
||||||
|
modifier_list[0] = DRM_FORMAT_MOD_INVALID;
|
||||||
|
|
||||||
|
*modifiers = modifier_list;
|
||||||
|
*n_modifiers = 1;
|
||||||
|
ret = TRUE;
|
||||||
|
#else
|
||||||
|
ret = FALSE;
|
||||||
|
#endif
|
||||||
|
// END stub
|
||||||
|
|
||||||
|
if (!ret)
|
||||||
|
g_warning ("Failed to query supported modifiers: %s",
|
||||||
|
error->message);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
CoglDmaBufHandle *
|
CoglDmaBufHandle *
|
||||||
meta_screen_cast_create_dma_buf_handle (MetaScreenCast *screen_cast,
|
meta_screen_cast_create_dma_buf_handle (MetaScreenCast *screen_cast,
|
||||||
CoglPixelFormat format,
|
CoglPixelFormat format,
|
||||||
|
@ -51,6 +51,11 @@ MetaBackend * meta_screen_cast_get_backend (MetaScreenCast *screen_cast);
|
|||||||
|
|
||||||
void meta_screen_cast_disable_dma_bufs (MetaScreenCast *screen_cast);
|
void meta_screen_cast_disable_dma_bufs (MetaScreenCast *screen_cast);
|
||||||
|
|
||||||
|
bool meta_screen_cast_query_modifiers (MetaScreenCast *screen_cast,
|
||||||
|
CoglPixelFormat format,
|
||||||
|
uint64_t **modifiers,
|
||||||
|
int *n_modifiers);
|
||||||
|
|
||||||
CoglDmaBufHandle * meta_screen_cast_create_dma_buf_handle (MetaScreenCast *screen_cast,
|
CoglDmaBufHandle * meta_screen_cast_create_dma_buf_handle (MetaScreenCast *screen_cast,
|
||||||
CoglPixelFormat format,
|
CoglPixelFormat format,
|
||||||
int width,
|
int width,
|
||||||
|
Loading…
Reference in New Issue
Block a user