/* LockScreen.c generated by valac 0.56.19, the Vala compiler
 * generated from LockScreen.vala, do not modify */

/*
 * Copyright 2026 elementary, Inc. (https://elementary.io)
 * SPDX-License-Identifier: GPL-3.0-or-later
 *
 * Authored by: Leonhard Kargl <leo.kargl@proton.me>
 */

#include <clutter/clutter.h>
#include <glib-object.h>
#include "gala.h"
#include <glib.h>
#include <gio/gio.h>
#include <meta/meta-background-group.h>
#include <meta/meta-plugin.h>
#include <meta/display.h>
#include <float.h>
#include <math.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define GALA_TYPE_LOCK_SCREEN (gala_lock_screen_get_type ())
#define GALA_LOCK_SCREEN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_LOCK_SCREEN, GalaLockScreen))
#define GALA_LOCK_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_LOCK_SCREEN, GalaLockScreenClass))
#define GALA_IS_LOCK_SCREEN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_LOCK_SCREEN))
#define GALA_IS_LOCK_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_LOCK_SCREEN))
#define GALA_LOCK_SCREEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_LOCK_SCREEN, GalaLockScreenClass))

typedef struct _GalaLockScreen GalaLockScreen;
typedef struct _GalaLockScreenClass GalaLockScreenClass;
typedef struct _GalaLockScreenPrivate GalaLockScreenPrivate;
enum  {
	GALA_LOCK_SCREEN_0_PROPERTY,
	GALA_LOCK_SCREEN_WM_PROPERTY,
	GALA_LOCK_SCREEN_WINDOW_GROUP_PROPERTY,
	GALA_LOCK_SCREEN_SHELL_GROUP_PROPERTY,
	GALA_LOCK_SCREEN_NUM_PROPERTIES
};
static GParamSpec* gala_lock_screen_properties[GALA_LOCK_SCREEN_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef struct _GalaLockScreenSetActiveData GalaLockScreenSetActiveData;

#define GALA_TYPE_BACKGROUND_CONTAINER (gala_background_container_get_type ())
#define GALA_BACKGROUND_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_BACKGROUND_CONTAINER, GalaBackgroundContainer))
#define GALA_BACKGROUND_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_BACKGROUND_CONTAINER, GalaBackgroundContainerClass))
#define GALA_IS_BACKGROUND_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_BACKGROUND_CONTAINER))
#define GALA_IS_BACKGROUND_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_BACKGROUND_CONTAINER))
#define GALA_BACKGROUND_CONTAINER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_BACKGROUND_CONTAINER, GalaBackgroundContainerClass))

typedef struct _GalaBackgroundContainer GalaBackgroundContainer;
typedef struct _GalaBackgroundContainerClass GalaBackgroundContainerClass;

#define GALA_TYPE_BLUR_EFFECT (gala_blur_effect_get_type ())
#define GALA_BLUR_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_BLUR_EFFECT, GalaBlurEffect))
#define GALA_BLUR_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_BLUR_EFFECT, GalaBlurEffectClass))
#define GALA_IS_BLUR_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_BLUR_EFFECT))
#define GALA_IS_BLUR_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_BLUR_EFFECT))
#define GALA_BLUR_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_BLUR_EFFECT, GalaBlurEffectClass))

typedef struct _GalaBlurEffect GalaBlurEffect;
typedef struct _GalaBlurEffectClass GalaBlurEffectClass;
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

struct _GalaLockScreen {
	ClutterActor parent_instance;
	GalaLockScreenPrivate * priv;
};

struct _GalaLockScreenClass {
	ClutterActorClass parent_class;
};

struct _GalaLockScreenPrivate {
	GalaWindowManager* _wm;
	ClutterActor* _window_group;
	ClutterActor* _shell_group;
	gboolean active;
	GalaModalProxy* modal_proxy;
};

struct _GalaLockScreenSetActiveData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GalaLockScreen* self;
	gboolean active;
};

static gint GalaLockScreen_private_offset;
static gpointer gala_lock_screen_parent_class = NULL;

VALA_EXTERN GType gala_lock_screen_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaLockScreen, g_object_unref)
VALA_EXTERN GalaLockScreen* gala_lock_screen_new (GalaWindowManager* wm);
VALA_EXTERN GalaLockScreen* gala_lock_screen_construct (GType object_type,
                                            GalaWindowManager* wm);
static void gala_lock_screen_set_active_data_free (gpointer _data);
VALA_EXTERN void gala_lock_screen_set_active (GalaLockScreen* self,
                                  gboolean active,
                                  GAsyncReadyCallback _callback_,
                                  gpointer _user_data_);
VALA_EXTERN void gala_lock_screen_set_active_finish (GalaLockScreen* self,
                                         GAsyncResult* _res_);
static gboolean gala_lock_screen_set_active_co (GalaLockScreenSetActiveData* _data_);
static void gala_lock_screen_update_modal (GalaLockScreen* self);
VALA_EXTERN GalaWindowManager* gala_lock_screen_get_wm (GalaLockScreen* self);
static void gala_lock_screen_set_wm (GalaLockScreen* self,
                              GalaWindowManager* value);
VALA_EXTERN ClutterActor* gala_lock_screen_get_window_group (GalaLockScreen* self);
static void gala_lock_screen_set_window_group (GalaLockScreen* self,
                                        ClutterActor* value);
VALA_EXTERN ClutterActor* gala_lock_screen_get_shell_group (GalaLockScreen* self);
static void gala_lock_screen_set_shell_group (GalaLockScreen* self,
                                       ClutterActor* value);
static GObject * gala_lock_screen_constructor (GType type,
                                        guint n_construct_properties,
                                        GObjectConstructParam * construct_properties);
VALA_EXTERN GType gala_background_container_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaBackgroundContainer, g_object_unref)
VALA_EXTERN GalaBackgroundContainer* gala_background_container_new (MetaDisplay* display);
VALA_EXTERN GalaBackgroundContainer* gala_background_container_construct (GType object_type,
                                                              MetaDisplay* display);
VALA_EXTERN GalaBlurEffect* gala_blur_effect_new (ClutterActor* actor,
                                      gfloat radius);
VALA_EXTERN GalaBlurEffect* gala_blur_effect_construct (GType object_type,
                                            ClutterActor* actor,
                                            gfloat radius);
VALA_EXTERN GType gala_blur_effect_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaBlurEffect, g_object_unref)
static void gala_lock_screen_finalize (GObject * obj);
static GType gala_lock_screen_get_type_once (void);
static void _vala_gala_lock_screen_get_property (GObject * object,
                                          guint property_id,
                                          GValue * value,
                                          GParamSpec * pspec);
static void _vala_gala_lock_screen_set_property (GObject * object,
                                          guint property_id,
                                          const GValue * value,
                                          GParamSpec * pspec);

static const GalaWindowGroup GALA_LOCK_SCREEN_ALLOWED_WINDOW_GROUPS[3] = {GALA_WINDOW_GROUP_LOCK_SCREEN, GALA_WINDOW_GROUP_LOCK_SCREEN_SHELL, GALA_WINDOW_GROUP_OVERLAY};

static inline gpointer
gala_lock_screen_get_instance_private (GalaLockScreen* self)
{
	return G_STRUCT_MEMBER_P (self, GalaLockScreen_private_offset);
}

GalaLockScreen*
gala_lock_screen_construct (GType object_type,
                            GalaWindowManager* wm)
{
	GalaLockScreen * self = NULL;
	g_return_val_if_fail (wm != NULL, NULL);
	self = (GalaLockScreen*) g_object_new (object_type, "wm", wm, NULL);
	return self;
}

GalaLockScreen*
gala_lock_screen_new (GalaWindowManager* wm)
{
	return gala_lock_screen_construct (GALA_TYPE_LOCK_SCREEN, wm);
}

static void
gala_lock_screen_set_active_data_free (gpointer _data)
{
	GalaLockScreenSetActiveData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (GalaLockScreenSetActiveData, _data_);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

void
gala_lock_screen_set_active (GalaLockScreen* self,
                             gboolean active,
                             GAsyncReadyCallback _callback_,
                             gpointer _user_data_)
{
	GalaLockScreenSetActiveData* _data_;
	GalaLockScreen* _tmp0_;
	g_return_if_fail (self != NULL);
	_data_ = g_slice_new0 (GalaLockScreenSetActiveData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, gala_lock_screen_set_active_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_data_->active = active;
	gala_lock_screen_set_active_co (_data_);
}

void
gala_lock_screen_set_active_finish (GalaLockScreen* self,
                                    GAsyncResult* _res_)
{
	GalaLockScreenSetActiveData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
}

static gboolean
gala_lock_screen_set_active_co (GalaLockScreenSetActiveData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	if (_data_->self->priv->active == _data_->active) {
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->self->priv->active = _data_->active;
	gala_lock_screen_update_modal (_data_->self);
	g_object_set ((ClutterActor*) _data_->self, "visible", _data_->active, NULL);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
gala_lock_screen_update_modal (GalaLockScreen* self)
{
	g_return_if_fail (self != NULL);
	if (self->priv->active) {
		GalaModalProxy* _tmp0_;
		GalaWindowManager* _tmp1_;
		GalaModalProxy* _tmp2_;
		GalaModalProxy* _tmp3_;
		GalaModalProxy* _tmp4_;
		_tmp0_ = self->priv->modal_proxy;
		_vala_assert (_tmp0_ == NULL, "modal_proxy == null");
		_tmp1_ = self->priv->_wm;
		_tmp2_ = gala_window_manager_push_modal (_tmp1_, (ClutterActor*) self, FALSE);
		_g_object_unref0 (self->priv->modal_proxy);
		self->priv->modal_proxy = _tmp2_;
		_tmp3_ = self->priv->modal_proxy;
		gala_modal_proxy_allow_actions (_tmp3_, (GALA_MODAL_ACTIONS_MEDIA_KEYS | GALA_MODAL_ACTIONS_ZOOM) | GALA_MODAL_ACTIONS_LOCATE_POINTER);
		_tmp4_ = self->priv->modal_proxy;
		gala_modal_proxy_allow_window_groups (_tmp4_, GALA_LOCK_SCREEN_ALLOWED_WINDOW_GROUPS, (gint) G_N_ELEMENTS (GALA_LOCK_SCREEN_ALLOWED_WINDOW_GROUPS));
	} else {
		GalaModalProxy* _tmp5_;
		GalaWindowManager* _tmp6_;
		GalaModalProxy* _tmp7_;
		_tmp5_ = self->priv->modal_proxy;
		_vala_assert (_tmp5_ != NULL, "modal_proxy != null");
		_tmp6_ = self->priv->_wm;
		_tmp7_ = self->priv->modal_proxy;
		gala_window_manager_pop_modal (_tmp6_, _tmp7_);
		_g_object_unref0 (self->priv->modal_proxy);
		self->priv->modal_proxy = NULL;
	}
}

GalaWindowManager*
gala_lock_screen_get_wm (GalaLockScreen* self)
{
	GalaWindowManager* result;
	GalaWindowManager* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_wm;
	result = _tmp0_;
	return result;
}

static void
gala_lock_screen_set_wm (GalaLockScreen* self,
                         GalaWindowManager* value)
{
	GalaWindowManager* old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_lock_screen_get_wm (self);
	if (old_value != value) {
		GalaWindowManager* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_wm);
		self->priv->_wm = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gala_lock_screen_properties[GALA_LOCK_SCREEN_WM_PROPERTY]);
	}
}

ClutterActor*
gala_lock_screen_get_window_group (GalaLockScreen* self)
{
	ClutterActor* result;
	ClutterActor* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_window_group;
	result = _tmp0_;
	return result;
}

static void
gala_lock_screen_set_window_group (GalaLockScreen* self,
                                   ClutterActor* value)
{
	ClutterActor* old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_lock_screen_get_window_group (self);
	if (old_value != value) {
		ClutterActor* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_window_group);
		self->priv->_window_group = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gala_lock_screen_properties[GALA_LOCK_SCREEN_WINDOW_GROUP_PROPERTY]);
	}
}

ClutterActor*
gala_lock_screen_get_shell_group (GalaLockScreen* self)
{
	ClutterActor* result;
	ClutterActor* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_shell_group;
	result = _tmp0_;
	return result;
}

static void
gala_lock_screen_set_shell_group (GalaLockScreen* self,
                                  ClutterActor* value)
{
	ClutterActor* old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_lock_screen_get_shell_group (self);
	if (old_value != value) {
		ClutterActor* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_shell_group);
		self->priv->_shell_group = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gala_lock_screen_properties[GALA_LOCK_SCREEN_SHELL_GROUP_PROPERTY]);
	}
}

static GObject *
gala_lock_screen_constructor (GType type,
                              guint n_construct_properties,
                              GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	GalaLockScreen * self;
	GalaBackgroundContainer* background = NULL;
	GalaWindowManager* _tmp0_;
	MetaDisplay* _tmp1_;
	GalaBackgroundContainer* _tmp2_;
	GalaBackgroundContainer* _tmp3_;
	GalaBackgroundContainer* _tmp4_;
	GalaBlurEffect* _tmp5_;
	GalaBlurEffect* _tmp6_;
	ClutterActor* _tmp7_;
	ClutterActor* _tmp8_;
	ClutterActor* _tmp9_;
	ClutterActor* _tmp10_;
	GalaBackgroundContainer* _tmp11_;
	ClutterActor* _tmp12_;
	ClutterActor* _tmp13_;
	parent_class = G_OBJECT_CLASS (gala_lock_screen_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GALA_TYPE_LOCK_SCREEN, GalaLockScreen);
	_tmp0_ = self->priv->_wm;
	_tmp1_ = meta_plugin_get_display ((MetaPlugin*) _tmp0_);
	_tmp2_ = gala_background_container_new (_tmp1_);
	g_object_ref_sink (_tmp2_);
	background = _tmp2_;
	_tmp3_ = background;
	_tmp4_ = background;
	_tmp5_ = gala_blur_effect_new ((ClutterActor*) _tmp4_, (gfloat) 18);
	g_object_ref_sink (_tmp5_);
	_tmp6_ = _tmp5_;
	clutter_actor_add_effect ((ClutterActor*) _tmp3_, (ClutterEffect*) _tmp6_);
	_g_object_unref0 (_tmp6_);
	_tmp7_ = clutter_actor_new ();
	g_object_ref_sink (_tmp7_);
	_tmp8_ = _tmp7_;
	gala_lock_screen_set_window_group (self, _tmp8_);
	_g_object_unref0 (_tmp8_);
	_tmp9_ = clutter_actor_new ();
	g_object_ref_sink (_tmp9_);
	_tmp10_ = _tmp9_;
	gala_lock_screen_set_shell_group (self, _tmp10_);
	_g_object_unref0 (_tmp10_);
	_tmp11_ = background;
	clutter_actor_add_child ((ClutterActor*) self, (ClutterActor*) _tmp11_);
	_tmp12_ = self->priv->_window_group;
	clutter_actor_add_child ((ClutterActor*) self, _tmp12_);
	_tmp13_ = self->priv->_shell_group;
	clutter_actor_add_child ((ClutterActor*) self, _tmp13_);
	clutter_actor_set_reactive ((ClutterActor*) self, TRUE);
	g_object_set ((ClutterActor*) self, "visible", TRUE, NULL);
	self->priv->active = TRUE;
	gala_lock_screen_update_modal (self);
	_g_object_unref0 (background);
	return obj;
}

static void
gala_lock_screen_class_init (GalaLockScreenClass * klass,
                             gpointer klass_data)
{
	gala_lock_screen_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &GalaLockScreen_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_gala_lock_screen_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_gala_lock_screen_set_property;
	G_OBJECT_CLASS (klass)->constructor = gala_lock_screen_constructor;
	G_OBJECT_CLASS (klass)->finalize = gala_lock_screen_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_LOCK_SCREEN_WM_PROPERTY, gala_lock_screen_properties[GALA_LOCK_SCREEN_WM_PROPERTY] = g_param_spec_object ("wm", "wm", "wm", GALA_TYPE_WINDOW_MANAGER, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_LOCK_SCREEN_WINDOW_GROUP_PROPERTY, gala_lock_screen_properties[GALA_LOCK_SCREEN_WINDOW_GROUP_PROPERTY] = g_param_spec_object ("window-group", "window-group", "window-group", clutter_actor_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_LOCK_SCREEN_SHELL_GROUP_PROPERTY, gala_lock_screen_properties[GALA_LOCK_SCREEN_SHELL_GROUP_PROPERTY] = g_param_spec_object ("shell-group", "shell-group", "shell-group", clutter_actor_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
}

static void
gala_lock_screen_instance_init (GalaLockScreen * self,
                                gpointer klass)
{
	self->priv = gala_lock_screen_get_instance_private (self);
}

static void
gala_lock_screen_finalize (GObject * obj)
{
	GalaLockScreen * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GALA_TYPE_LOCK_SCREEN, GalaLockScreen);
	_g_object_unref0 (self->priv->_wm);
	_g_object_unref0 (self->priv->_window_group);
	_g_object_unref0 (self->priv->_shell_group);
	_g_object_unref0 (self->priv->modal_proxy);
	G_OBJECT_CLASS (gala_lock_screen_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
gala_lock_screen_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GalaLockScreenClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gala_lock_screen_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GalaLockScreen), 0, (GInstanceInitFunc) gala_lock_screen_instance_init, NULL };
	GType gala_lock_screen_type_id;
	gala_lock_screen_type_id = g_type_register_static (clutter_actor_get_type (), "GalaLockScreen", &g_define_type_info, G_TYPE_FLAG_NONE);
	GalaLockScreen_private_offset = g_type_add_instance_private (gala_lock_screen_type_id, sizeof (GalaLockScreenPrivate));
	return gala_lock_screen_type_id;
}

GType
gala_lock_screen_get_type (void)
{
	static gsize gala_lock_screen_type_id__once = 0;
	if (g_once_init_enter (&gala_lock_screen_type_id__once)) {
		GType gala_lock_screen_type_id;
		gala_lock_screen_type_id = gala_lock_screen_get_type_once ();
		g_once_init_leave (&gala_lock_screen_type_id__once, gala_lock_screen_type_id);
	}
	return gala_lock_screen_type_id__once;
}

static void
_vala_gala_lock_screen_get_property (GObject * object,
                                     guint property_id,
                                     GValue * value,
                                     GParamSpec * pspec)
{
	GalaLockScreen * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_TYPE_LOCK_SCREEN, GalaLockScreen);
	switch (property_id) {
		case GALA_LOCK_SCREEN_WM_PROPERTY:
		g_value_set_object (value, gala_lock_screen_get_wm (self));
		break;
		case GALA_LOCK_SCREEN_WINDOW_GROUP_PROPERTY:
		g_value_set_object (value, gala_lock_screen_get_window_group (self));
		break;
		case GALA_LOCK_SCREEN_SHELL_GROUP_PROPERTY:
		g_value_set_object (value, gala_lock_screen_get_shell_group (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_gala_lock_screen_set_property (GObject * object,
                                     guint property_id,
                                     const GValue * value,
                                     GParamSpec * pspec)
{
	GalaLockScreen * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_TYPE_LOCK_SCREEN, GalaLockScreen);
	switch (property_id) {
		case GALA_LOCK_SCREEN_WM_PROPERTY:
		gala_lock_screen_set_wm (self, g_value_get_object (value));
		break;
		case GALA_LOCK_SCREEN_WINDOW_GROUP_PROPERTY:
		gala_lock_screen_set_window_group (self, g_value_get_object (value));
		break;
		case GALA_LOCK_SCREEN_SHELL_GROUP_PROPERTY:
		gala_lock_screen_set_shell_group (self, g_value_get_object (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

