Skip to content

Commit

Permalink
Add Mutter 47 support
Browse files Browse the repository at this point in the history
  • Loading branch information
danirabbit committed Nov 7, 2024
1 parent b8b5761 commit bcfa845
Show file tree
Hide file tree
Showing 26 changed files with 1,815 additions and 757 deletions.
11 changes: 11 additions & 0 deletions compositor/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,17 @@ if mutter46_dep.found()
vala_flags = ['--define', 'HAS_MUTTER43', '--define', 'HAS_MUTTER44', '--define', 'HAS_MUTTER45', '--define', 'HAS_MUTTER46']
endif

mutter47_dep = dependency('libmutter-15', version: ['>= 47', '< 48'], required: false)
if mutter47_dep.found()
libmutter_dep = dependency('libmutter-15', version: '>= 47')
mutter_dep = [
libmutter_dep,
dependency('mutter-mtk-15'), dependency('mutter-cogl-15'),
dependency('mutter-cogl-pango-15'), dependency('mutter-clutter-15')
]
vala_flags = ['--define', 'HAS_MUTTER43', '--define', 'HAS_MUTTER44', '--define', 'HAS_MUTTER45', '--define', 'HAS_MUTTER46', '--define', 'HAS_MUTTER47']
endif

if mutter_dep.length() == 0
error ('No supported mutter library found!')
endif
Expand Down
30 changes: 30 additions & 0 deletions vapi/Clutter-15-custom.vala
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
namespace Clutter {
public interface Container : GLib.Object {
public void add (params Clutter.Actor[] actors);
[CCode (cname = "clutter_container_class_find_child_property")]
public class unowned GLib.ParamSpec find_child_property (string property_name);
[CCode (cname = "clutter_container_class_list_child_properties")]
public class unowned GLib.ParamSpec[] list_child_properties ();
}

public struct Units {
[CCode (cname = "clutter_units_from_cm")]
public Units.from_cm (float cm);
[CCode (cname = "clutter_units_from_em")]
public Units.from_em (float em);
[CCode (cname = "clutter_units_from_em_for_font")]
public Units.from_em_for_font (string font_name, float em);
[CCode (cname = "clutter_units_from_mm")]
public Units.from_mm (float mm);
[CCode (cname = "clutter_units_from_pixels")]
public Units.from_pixels (int px);
[CCode (cname = "clutter_units_from_pt")]
public Units.from_pt (float pt);
[CCode (cname = "clutter_units_from_string")]
public Units.from_string (string str);
}

[CCode (cheader_filename = "clutter/clutter.h", has_copy_function = false, has_destroy_function = false, has_type_id = false)]
public struct Capture {
}
}
139 changes: 139 additions & 0 deletions vapi/Clutter-15.metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
// Non mini-object
ActorBox struct
Margin struct
PaintVolume struct
Perspective struct

*.ref unowned

Actor
.apply_transform.matrix ref
.get_abs_allocation_vertices.verts out=false
Event.type#method name="get_type"
Image
.new symbol_type="constructor"

// ???
Actor.has_pointer#method name="get_has_pointer"

// Not all backing symbols are deprecated
Actor.pick deprecated=false

// Nullable return values
Actor
.get_parent nullable

// method/virtual-method/signal don't match
Actor
.event#method name="emit_event"
.get_paint_volume#virtual_method name="get_paint_volume_vfunc"
.get_paint_volume#virtual_method.volume out
Text
.activate#method name="try_activate"
.insert_text#signal skip
TextBuffer.get_text#virtual_method name="get_text_with_length"

// Default values
Stage.read_pixels
.width default=-1
.height default=-1
Stage.paint_to_buffer
.data type="uint8[]"
Text
.position_to_coords.line_height default=null

// Skipped by g-i for unknown reasons
LayoutManager
.create_child_meta skip=false

// Variadic arguments
Backend
.get_cogl_context skip=false
Interval
.new skip=false
.get_interval skip=false
.set_final skip=false
.set_initial skip=false
.set_interval skip=false
LayoutManager
.child_get skip=false
.child_set skip=false

// Skipped upstream for unknown reasons
Interval.register_progress_func skip=false
threads_add_idle skip=false
threads_add_idle_full skip=false
threads_add_timeout skip=false
threads_add_timeout_full skip=false

// struct/class confusion
ActorBox
.new skip
.from_vertices skip
Margin
.new skip

// Upstream
Event
.get_position.position out

TransferFunction.get_default_luminances
.min_lum_out out
.max_lum_out out
.ref_lum_out out

FrameListenerIface skip
FrameClock.new skip

// Remove for clutter-2.0
/////////////////////////

StageView.layout skip

Stage
.paint_view.redraw_clip type="Cairo.Region"

// *Event should be compact classes derived from Clutter.Event
Event.type skip=false
AnyEvent struct=false base_type="Clutter.Event"
ButtonEvent struct=false base_type="Clutter.Event"
CrossingEvent struct=false base_type="Clutter.Event"
DeviceEvent struct=false base_type="Clutter.Event"
IMEvent struct=false base_type="Clutter.Event"
KeyEvent struct=false base_type="Clutter.Event"
MotionEvent struct=false base_type="Clutter.Event"
PadButtonEvent struct=false base_type="Clutter.Event"
PadRingEvent struct=false base_type="Clutter.Event"
PadStripEvent struct=false base_type="Clutter.Event"
ProximityEvent struct=false base_type="Clutter.Event"
ScrollEvent struct=false base_type="Clutter.Event"
TouchEvent struct=false base_type="Clutter.Event"
TouchpadHoldEvent struct=false base_type="Clutter.Event"
TouchpadPinchEvent struct=false base_type="Clutter.Event"
TouchpadSwipeEvent struct=false base_type="Clutter.Event"

// Keysyms used to be CLUTTER_X instead of CLUTTER_KEY_X
*#constant skip
CURRENT_TIME skip=false
PRIORITY_REDRAW skip=false

// Clutter devs don't like us creating nested namespaces
value_* name="value_(.+)" parent="Clutter.Value"
threads_* name="threads_(.+)" parent="Clutter.Threads"
threads_add_idle name="add" parent="Clutter.Threads.Idle"
threads_add_idle_full name="add_full" parent="Clutter.Threads.Idle"
threads_add_timeout name="add" parent="Clutter.Threads.Timeout"
threads_add_timeout_full name="add_full" parent="Clutter.Threads.Timeout"

// There is no way to know sealed classes before GLib 2.70
ColorState sealed
FrameClock sealed
TextureContent sealed

TextureContent.new_from_texture symbol_type="constructor"

// Possibly keep
KEY_* skip=false name="KEY_(.+)" type="uint" parent="Clutter.Key"
BUTTON_* skip=false name="BUTTON_(.+)" type="uint32" parent="Clutter.Button"
EVENT_STOP skip=false type="bool"
EVENT_PROPAGATE skip=false type="bool"
66 changes: 66 additions & 0 deletions vapi/Cogl-15-custom.vala
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
namespace Cogl {
public struct Color {
[CCode (cname="cogl_color_init_from_4f")]
public Color.from_4f (float red, float green, float blue, float alpha);
[CCode (cname="cogl_color_init_from_hsl")]
public Color.from_hsl (float hue, float saturation, float luminance);
[CCode (cname = "_vala_cogl_color_from_string")]
public static Cogl.Color? from_string (string str) {
Cogl.Color color = {};
if (color.init_from_string (str))
return color;

return null;
}
}
[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
public struct VertexP2 {
public float x;
public float y;
}
[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
public struct VertexP2C4 {
public float x;
public float y;
public uint8 r;
public uint8 g;
public uint8 b;
public uint8 a;
}
[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
public struct VertexP2T2 {
public float x;
public float y;
public float s;
public float t;
}
[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
public struct VertexP2T2C4 {
public float x;
public float y;
public float s;
public float t;
public uint8 r;
public uint8 g;
public uint8 b;
public uint8 a;
}
[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
public struct VertexP3 {
public float x;
public float y;
public float z;
}
[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
public struct VertexP3T2 {
public float x;
public float y;
public float z;
public float s;
public float t;
}
[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_PIXEL_FORMAT_", type_id = "cogl_pixel_format_get_type ()")]
public enum PixelFormat {
CAIRO_ARGB32_COMPAT;
}
}
46 changes: 46 additions & 0 deletions vapi/Cogl-15.metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
* cheader_filename="cogl/cogl.h"

Color struct

Color.equal.v1 type="Cogl.Color"
Color.equal.v2 type="Cogl.Color"
Color.from_string name="init_from_string"

Context.free_timestamp_query.query owned

Bitmap.* skip=false
Bitmap.new_for_data.data type="owned uint8[]"
Bitmap.get_buffer type="unowned Cogl.Buffer?"

Primitive.new skip=false

Texture
.get_data.data type="uint8[]"
.set_data.data type="uint8[]"
.set_region.data type="uint8[]"

Texture2D
.new_from_data skip=false

Texture.error_quark parent="Cogl.TextureError" name="quark"
Scanout.error_quark parent="Cogl.ScanoutError" name="quark"

RendererError errordomain
SystemError errordomain
TextureError errordomain
FramebufferError errordomain
ScanoutError errordomain

blit_framebuffer parent="Cogl.Framebuffer" symbol_type="method" instance_idx=0 name="blit"
meta_texture_foreach_in_region parent="Cogl.Texture" symbol_type="method" instance_idx=0 name="foreach_in_region"

Onscreen
.add_frame_callback unowned

A_BIT parent="Cogl.Bits" name="A"
BGR_BIT parent="Cogl.Bits" name="BGR"
AFIRST_BIT parent="Cogl.Bits" name="AFIRST"
PREMULT_BIT parent="Cogl.Bits" name="PREMULT"
DEPTH_BIT parent="Cogl.Bits" name="DEPTH"
STENCIL_BIT parent="Cogl.Bits" name="STENCIL"
PIXEL_FORMAT_MAX_PLANES parent = "Cogl.PixelFormat" name="MAX_PLANES"
Loading

0 comments on commit bcfa845

Please sign in to comment.