Skip to content

Commit

Permalink
Add initial support for Mutter 40
Browse files Browse the repository at this point in the history
  • Loading branch information
tintou committed Dec 3, 2020
1 parent 667e401 commit c49ac07
Show file tree
Hide file tree
Showing 18 changed files with 1,094 additions and 3 deletions.
13 changes: 13 additions & 0 deletions meson.build
Expand Up @@ -175,6 +175,19 @@ if mutter338_dep.found()
'-DCOGL_ENABLE_EXPERIMENTAL_API', '-DCOGL_ENABLE_EXPERIMENTAL_2_0_API'], language: 'c')
endif

mutter40_dep = dependency('libmutter-8', version: ['>= 40', '< 41'], required: false)
if mutter40_dep.found()
libmutter_dep = dependency('libmutter-8', version: '>= 40')
mutter_dep = [
libmutter_dep,
dependency('mutter-cogl-8'), dependency('mutter-cogl-pango-8'),
dependency('mutter-clutter-8')
]
vala_flags = ['--define', 'HAS_MUTTER330', '--define', 'HAS_MUTTER332', '--define', 'HAS_MUTTER334', '--define', 'HAS_MUTTER336', '--define', 'HAS_MUTTER338', '--define', 'HAS_MUTTER40']
add_project_arguments(['-DCLUTTER_ENABLE_COMPOSITOR_API', '-DCLUTTER_ENABLE_EXPERIMENTAL_API',
'-DCOGL_ENABLE_EXPERIMENTAL_API', '-DCOGL_ENABLE_EXPERIMENTAL_2_0_API'], language: 'c')
endif

if mutter_dep.length() == 0
error ('No supported mutter library found!')
endif
Expand Down
42 changes: 42 additions & 0 deletions vapi/Clutter-8-custom.vala
@@ -0,0 +1,42 @@
namespace Clutter {

public struct Color {
[CCode (cname = "clutter_color_from_hls")]
public Color.from_hls (float hue, float luminance, float saturation);
[CCode (cname = "clutter_color_from_pixel")]
public Color.from_pixel (uint32 pixel);
[CCode (cname = "clutter_color_from_string")]
public Color.from_string (string str);
[CCode (cname = "clutter_color_from_string")]
public bool parse_string (string str);
}

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 {
}
}
188 changes: 188 additions & 0 deletions vapi/Clutter-8.metadata
@@ -0,0 +1,188 @@
// Non mini-object
ActorBox struct
Color struct
Knot struct
Margin struct
PaintVolume struct
PathNode struct
Perspective struct
Units struct

*.ref unowned

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

// ???
Actor.has_pointer#method name="get_has_pointer"
InitError errordomain=false

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

// Nullable return values
Actor
.get_parent nullable
value_get_color 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
Container
.add_actor skip=false
.class_* skip
Text
.activate#method name="try_activate"
.insert_text#signal skip
TextBuffer.get_text#virtual_method name="get_text_with_length"

// virtual/abstract distinction
Container
.lower virtual
.raise virtual
.*_child_meta#virtual_method virtual

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

// Reparented funcs methods can't be instance methods
feature_available skip
feature_get_all skip

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

// Variadic arguments
Backend
.get_cogl_context skip=false
Container
.child_get skip=false
.child_set skip=false
.remove 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
Script
.get_objects skip=false

// Skipped upstream for unknown reasons
Interval.register_progress_func skip=false
get_option_group skip=false
get_option_group_without_init 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
Units.from_* skip
Color
.new skip
Margin
.new skip

// Class methods
container_class_find_child_property skip
container_class_list_child_properties skip

// Move symbols
color_from_* skip
units_from_* skip

// Struct return values
color_get_static nullable

// Upstream
Event
.get_position.position out

FrameListenerIface skip
FrameClock.new skip

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

StageView.layout skip

Stage
.event name="emit_event"
.paint_view.redraw_clip type="Cairo.Region"

Capture
.image type="Cairo.ImageSurface"

// *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"
ScrollEvent struct=false base_type="Clutter.Event"
StageStateEvent struct=false base_type="Clutter.Event"
TouchEvent struct=false base_type="Clutter.Event"
TouchpadPinchEvent struct=false base_type="Clutter.Event"
TouchpadSwipeEvent struct=false base_type="Clutter.Event"
ProximityEvent 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"

// Keysyms used to be CLUTTER_X instead of CLUTTER_KEY_X
*#constant skip
COGL skip=false
CURRENT_TIME skip=false
FLAVOUR skip=false
PATH_RELATIVE 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"

// Backwards compatibility
Color.alloc symbol_type="function"

BinAlignment deprecated=false deprecated_since=null
BinAlignment.* deprecated
BinAlignment.start deprecated=false
BinLayout.new.*_align default=Clutter.BinAlignment.START

// Possibly keep
KEY_* skip=false name="KEY_(.+)" type="uint" parent="Clutter.Key"

0 comments on commit c49ac07

Please sign in to comment.