mirror of
https://github.com/brl/mutter.git
synced 2024-12-28 05:42:14 +00:00
screen-cast/src: Add get_preferred_format vfunc
This allows subclasses to hint which pixel format they would prefer to be used. It may or may not be respected, depending on the available hardware capabilities. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3175>
This commit is contained in:
parent
e24be82c12
commit
b6bf6572a1
@ -60,6 +60,8 @@
|
|||||||
#define MIN_FRAME_RATE SPA_FRACTION (1, 1)
|
#define MIN_FRAME_RATE SPA_FRACTION (1, 1)
|
||||||
#define MAX_FRAME_RATE SPA_FRACTION (1000, 1)
|
#define MAX_FRAME_RATE SPA_FRACTION (1000, 1)
|
||||||
|
|
||||||
|
#define DEFAULT_COGL_PIXEL_FORMAT COGL_PIXEL_FORMAT_BGRX_8888
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
@ -1514,6 +1516,12 @@ meta_screen_cast_stream_src_get_stream (MetaScreenCastStreamSrc *src)
|
|||||||
return priv->stream;
|
return priv->stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CoglPixelFormat
|
||||||
|
meta_screen_cast_stream_src_default_get_preferred_format (MetaScreenCastStreamSrc *src)
|
||||||
|
{
|
||||||
|
return DEFAULT_COGL_PIXEL_FORMAT;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_screen_cast_stream_src_dispose (GObject *object)
|
meta_screen_cast_stream_src_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
@ -1593,6 +1601,9 @@ meta_screen_cast_stream_src_class_init (MetaScreenCastStreamSrcClass *klass)
|
|||||||
object_class->set_property = meta_screen_cast_stream_src_set_property;
|
object_class->set_property = meta_screen_cast_stream_src_set_property;
|
||||||
object_class->get_property = meta_screen_cast_stream_src_get_property;
|
object_class->get_property = meta_screen_cast_stream_src_get_property;
|
||||||
|
|
||||||
|
klass->get_preferred_format =
|
||||||
|
meta_screen_cast_stream_src_default_get_preferred_format;
|
||||||
|
|
||||||
g_object_class_install_property (object_class,
|
g_object_class_install_property (object_class,
|
||||||
PROP_STREAM,
|
PROP_STREAM,
|
||||||
g_param_spec_object ("stream", NULL, NULL,
|
g_param_spec_object ("stream", NULL, NULL,
|
||||||
@ -1624,3 +1635,12 @@ meta_screen_cast_stream_src_uses_dma_bufs (MetaScreenCastStreamSrc *src)
|
|||||||
|
|
||||||
return priv->uses_dma_bufs;
|
return priv->uses_dma_bufs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CoglPixelFormat
|
||||||
|
meta_screen_cast_stream_src_get_preferred_format (MetaScreenCastStreamSrc *src)
|
||||||
|
{
|
||||||
|
MetaScreenCastStreamSrcClass *klass =
|
||||||
|
META_SCREEN_CAST_STREAM_SRC_GET_CLASS (src);
|
||||||
|
|
||||||
|
return klass->get_preferred_format (src);
|
||||||
|
}
|
||||||
|
@ -83,6 +83,8 @@ struct _MetaScreenCastStreamSrcClass
|
|||||||
|
|
||||||
void (* notify_params_updated) (MetaScreenCastStreamSrc *src,
|
void (* notify_params_updated) (MetaScreenCastStreamSrc *src,
|
||||||
struct spa_video_info_raw *video_format);
|
struct spa_video_info_raw *video_format);
|
||||||
|
|
||||||
|
CoglPixelFormat (* get_preferred_format) (MetaScreenCastStreamSrc *src);
|
||||||
};
|
};
|
||||||
|
|
||||||
void meta_screen_cast_stream_src_close (MetaScreenCastStreamSrc *src);
|
void meta_screen_cast_stream_src_close (MetaScreenCastStreamSrc *src);
|
||||||
@ -132,3 +134,5 @@ void meta_screen_cast_stream_src_set_cursor_sprite_metadata (MetaScreenCastStrea
|
|||||||
|
|
||||||
gboolean meta_screen_cast_stream_src_uses_dma_bufs (MetaScreenCastStreamSrc *src);
|
gboolean meta_screen_cast_stream_src_uses_dma_bufs (MetaScreenCastStreamSrc *src);
|
||||||
|
|
||||||
|
CoglPixelFormat
|
||||||
|
meta_screen_cast_stream_src_get_preferred_format (MetaScreenCastStreamSrc *src);
|
||||||
|
Loading…
Reference in New Issue
Block a user