111
111
UNITY_APP_INFO_MANAGER_DUMMY_PROPERTY
113
static UnityAppInfoManager* unity_app_info_manager_new (void);
114
static UnityAppInfoManager* unity_app_info_manager_construct (GType object_type);
115
113
char** unity_io_get_system_data_dirs (int* result_length1);
116
114
static void unity_app_info_manager_on_dir_changed (UnityAppInfoManager* self, GFileMonitor* mon, GFile* file, GFile* other_file, GFileMonitorEvent e);
117
115
static void _unity_app_info_manager_on_dir_changed_g_file_monitor_changed (GFileMonitor* _sender, GFile* file, GFile* other_file, GFileMonitorEvent event_type, gpointer self);
116
static UnityAppInfoManager* unity_app_info_manager_new (void);
117
static UnityAppInfoManager* unity_app_info_manager_construct (GType object_type);
118
118
UnityAppInfoManager* unity_app_info_manager_get_instance (void);
119
119
GAppInfo* unity_app_info_manager_lookup (UnityAppInfoManager* self, const char* id);
120
120
GeeList* unity_app_info_manager_get_categories (UnityAppInfoManager* self, const char* id);
121
121
static void unity_app_info_manager_lookup_async_data_free (gpointer _data);
122
122
static void unity_app_info_manager_lookup_async_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
123
void unity_app_info_manager_lookup_async (UnityAppInfoManager* self, const char* id, GAsyncReadyCallback _callback_, gpointer _user_data_);
124
GAppInfo* unity_app_info_manager_lookup_finish (UnityAppInfoManager* self, GAsyncResult* _res_, GError** error);
125
static gboolean unity_app_info_manager_lookup_async_co (UnityAppInfoManagerLookupAsyncData* data);
126
123
void unity_io_open_from_data_dirs (const char* filename, GAsyncReadyCallback _callback_, gpointer _user_data_);
127
124
GFileInputStream* unity_io_open_from_data_dirs_finish (GAsyncResult* _res_, GError** error);
128
125
void unity_io_read_stream_async (GInputStream* input, guchar* buffer, int buffer_length1, gsize buffer_lenght, gint io_priority, GCancellable* cancellable, GAsyncReadyCallback _callback_, gpointer _user_data_);
129
126
void unity_io_read_stream_finish (GAsyncResult* _res_, void** data, gsize* size, GError** error);
130
127
static guchar* _vala_array_dup1 (guchar* self, int length);
128
void unity_app_info_manager_lookup_async (UnityAppInfoManager* self, const char* id, GAsyncReadyCallback _callback_, gpointer _user_data_);
129
GAppInfo* unity_app_info_manager_lookup_finish (UnityAppInfoManager* self, GAsyncResult* _res_, GError** error);
130
static gboolean unity_app_info_manager_lookup_async_co (UnityAppInfoManagerLookupAsyncData* data);
131
131
void unity_app_info_manager_clear (UnityAppInfoManager* self);
132
132
static void unity_app_info_manager_finalize (GObject* obj);
133
133
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
585
560
switch (data->_state_) {
589
g_assert_not_reached ();
570
g_assert_not_reached ();
598
if (gee_map_has_key (data->self->priv->appinfo_by_id, data->id)) {
599
data->result = (GAppInfo*) gee_map_get (data->self->priv->appinfo_by_id, data->id);
601
if (data->_state_ == 0) {
602
g_simple_async_result_complete_in_idle (data->_async_result);
604
g_simple_async_result_complete (data->_async_result);
606
g_object_unref (data->_async_result);
610
if (g_str_has_prefix (data->id, "/")) {
611
data->f = g_file_new_for_path (data->id);
613
g_file_read_async (data->f, G_PRIORITY_DEFAULT, NULL, unity_app_info_manager_lookup_async_ready, data);
616
data->_tmp0_ = g_file_read_finish (data->f, data->_res_, &data->_inner_error_);
617
if (data->_inner_error_ != NULL) {
618
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
619
g_error_free (data->_inner_error_);
620
_g_object_unref0 (data->f);
621
_g_object_unref0 (data->input);
574
if (gee_map_has_key (data->self->priv->appinfo_by_id, data->id)) {
575
data->result = (GAppInfo*) gee_map_get (data->self->priv->appinfo_by_id, data->id);
623
577
if (data->_state_ == 0) {
624
578
g_simple_async_result_complete_in_idle (data->_async_result);
632
data->input = (data->_tmp1_ = data->_tmp0_, _g_object_unref0 (data->input), data->_tmp1_);
633
data->dir = g_file_get_parent (data->f);
634
data->dir_uri = g_file_get_uri (data->dir);
635
if (!gee_map_has_key (data->self->priv->monitors, data->dir_uri)) {
637
data->monitor = g_file_monitor_directory (data->dir, G_FILE_MONITOR_NONE, NULL, &data->_inner_error_);
586
if (g_str_has_prefix (data->id, "/")) {
587
data->f = g_file_new_for_path (data->id);
589
g_file_read_async (data->f, G_PRIORITY_DEFAULT, NULL, unity_app_info_manager_lookup_async_ready, data);
592
data->_tmp0_ = g_file_read_finish (data->f, data->_res_, &data->_inner_error_);
593
if (data->_inner_error_ != NULL) {
594
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
595
g_error_free (data->_inner_error_);
596
_g_object_unref0 (data->f);
597
_g_object_unref0 (data->input);
599
if (data->_state_ == 0) {
600
g_simple_async_result_complete_in_idle (data->_async_result);
602
g_simple_async_result_complete (data->_async_result);
604
g_object_unref (data->_async_result);
608
data->input = (data->_tmp1_ = data->_tmp0_, _g_object_unref0 (data->input), data->_tmp1_);
609
data->dir = g_file_get_parent (data->f);
610
data->dir_uri = g_file_get_uri (data->dir);
611
if (!gee_map_has_key (data->self->priv->monitors, data->dir_uri)) {
613
data->monitor = g_file_monitor_directory (data->dir, G_FILE_MONITOR_NONE, NULL, &data->_inner_error_);
614
if (data->_inner_error_ != NULL) {
615
if (data->_inner_error_->domain == G_IO_ERROR) {
616
goto __catch14_g_io_error;
618
_g_free0 (data->dir_uri);
619
_g_object_unref0 (data->dir);
620
_g_object_unref0 (data->f);
621
_g_object_unref0 (data->input);
622
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
623
g_clear_error (&data->_inner_error_);
626
g_signal_connect_object (data->monitor, "changed", (GCallback) _unity_app_info_manager_on_dir_changed_g_file_monitor_changed, data->self, 0);
627
gee_map_set (data->self->priv->monitors, data->dir_uri, data->monitor);
628
g_debug ("unity-appinfo-manager.vala:247: Monitoring extra app directory: %s", data->dir_uri);
629
_g_object_unref0 (data->monitor);
632
__catch14_g_io_error:
634
data->ioe = data->_inner_error_;
635
data->_inner_error_ = NULL;
637
g_warning ("unity-appinfo-manager.vala:249: Error setting up extra app directory m" \
638
"onitor on '%s': %s", data->dir_uri, data->ioe->message);
639
_g_error_free0 (data->ioe);
638
643
if (data->_inner_error_ != NULL) {
639
if (data->_inner_error_->domain == G_IO_ERROR) {
640
goto __catch14_g_io_error;
644
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
645
g_error_free (data->_inner_error_);
642
646
_g_free0 (data->dir_uri);
643
647
_g_object_unref0 (data->dir);
644
648
_g_object_unref0 (data->f);
645
649
_g_object_unref0 (data->input);
646
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
647
g_clear_error (&data->_inner_error_);
650
g_signal_connect_object (data->monitor, "changed", (GCallback) _unity_app_info_manager_on_dir_changed_g_file_monitor_changed, data->self, 0);
651
gee_map_set (data->self->priv->monitors, data->dir_uri, data->monitor);
652
g_debug ("unity-appinfo-manager.vala:247: Monitoring extra app directory: %s", data->dir_uri);
653
_g_object_unref0 (data->monitor);
656
__catch14_g_io_error:
658
data->ioe = data->_inner_error_;
659
data->_inner_error_ = NULL;
661
g_warning ("unity-appinfo-manager.vala:249: Error setting up extra app directory m" \
662
"onitor on '%s': %s", data->dir_uri, data->ioe->message);
663
_g_error_free0 (data->ioe);
651
if (data->_state_ == 0) {
652
g_simple_async_result_complete_in_idle (data->_async_result);
654
g_simple_async_result_complete (data->_async_result);
656
g_object_unref (data->_async_result);
661
_g_free0 (data->dir_uri);
662
_g_object_unref0 (data->dir);
663
_g_object_unref0 (data->f);
665
data->path = g_build_filename ("applications", data->id, NULL, NULL);
667
unity_io_open_from_data_dirs (data->path, unity_app_info_manager_lookup_async_ready, data);
670
data->_tmp2_ = unity_io_open_from_data_dirs_finish (data->_res_, &data->_inner_error_);
667
671
if (data->_inner_error_ != NULL) {
668
672
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
669
673
g_error_free (data->_inner_error_);
670
_g_free0 (data->dir_uri);
671
_g_object_unref0 (data->dir);
672
_g_object_unref0 (data->f);
674
_g_free0 (data->path);
673
675
_g_object_unref0 (data->input);
675
677
if (data->_state_ == 0) {
685
_g_free0 (data->dir_uri);
686
_g_object_unref0 (data->dir);
687
_g_object_unref0 (data->f);
689
data->path = g_build_filename ("applications", data->id, NULL, NULL);
691
unity_io_open_from_data_dirs (data->path, unity_app_info_manager_lookup_async_ready, data);
694
data->_tmp2_ = unity_io_open_from_data_dirs_finish (data->_res_, &data->_inner_error_);
695
if (data->_inner_error_ != NULL) {
696
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
697
g_error_free (data->_inner_error_);
686
data->input = (data->_tmp3_ = data->_tmp2_, _g_object_unref0 (data->input), data->_tmp3_);
698
687
_g_free0 (data->path);
699
_g_object_unref0 (data->input);
701
if (data->_state_ == 0) {
702
g_simple_async_result_complete_in_idle (data->_async_result);
704
g_simple_async_result_complete (data->_async_result);
706
g_object_unref (data->_async_result);
710
data->input = (data->_tmp3_ = data->_tmp2_, _g_object_unref0 (data->input), data->_tmp3_);
711
_g_free0 (data->path);
713
if (data->input == NULL) {
714
gee_map_set (data->self->priv->appinfo_by_id, data->id, NULL);
716
_g_object_unref0 (data->input);
718
if (data->_state_ == 0) {
719
g_simple_async_result_complete_in_idle (data->_async_result);
721
g_simple_async_result_complete (data->_async_result);
723
g_object_unref (data->_async_result);
729
unity_io_read_stream_async ((GInputStream*) data->input, (data->_tmp4_ = data->self->priv->buffer, (data->_tmp4_ == NULL) ? ((gpointer) data->_tmp4_) : _vala_array_dup1 (data->_tmp4_, data->self->priv->buffer_length1)), data->self->priv->buffer_length1, data->self->priv->buffer_size, G_PRIORITY_DEFAULT, NULL, unity_app_info_manager_lookup_async_ready, data);
732
unity_io_read_stream_finish (data->_res_, &data->data, &data->data_size, &data->_inner_error_);
733
if (data->_inner_error_ != NULL) {
734
goto __catch15_g_error;
740
data->e = data->_inner_error_;
741
data->_inner_error_ = NULL;
743
g_warning ("unity-appinfo-manager.vala:277: Error reading '%s': %s", data->id, data->e->message);
745
_g_error_free0 (data->e);
746
_g_object_unref0 (data->input);
748
if (data->_state_ == 0) {
749
g_simple_async_result_complete_in_idle (data->_async_result);
751
g_simple_async_result_complete (data->_async_result);
753
g_object_unref (data->_async_result);
756
_g_error_free0 (data->e);
760
if (data->_inner_error_ != NULL) {
761
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
762
g_error_free (data->_inner_error_);
763
_g_object_unref0 (data->input);
765
if (data->_state_ == 0) {
766
g_simple_async_result_complete_in_idle (data->_async_result);
768
g_simple_async_result_complete (data->_async_result);
770
g_object_unref (data->_async_result);
774
data->keyfile = g_key_file_new ();
776
g_key_file_load_from_data (data->keyfile, (const char*) data->data, data->data_size, G_KEY_FILE_NONE, &data->_inner_error_);
777
if (data->_inner_error_ != NULL) {
778
goto __catch16_g_error;
784
data->ee = data->_inner_error_;
785
data->_inner_error_ = NULL;
787
g_warning ("unity-appinfo-manager.vala:288: Error parsing '%s': %s", data->id, data->ee->message);
789
_g_error_free0 (data->ee);
689
if (data->input == NULL) {
690
gee_map_set (data->self->priv->appinfo_by_id, data->id, NULL);
692
_g_object_unref0 (data->input);
694
if (data->_state_ == 0) {
695
g_simple_async_result_complete_in_idle (data->_async_result);
697
g_simple_async_result_complete (data->_async_result);
699
g_object_unref (data->_async_result);
705
unity_io_read_stream_async ((GInputStream*) data->input, (data->_tmp4_ = data->self->priv->buffer, (data->_tmp4_ == NULL) ? ((gpointer) data->_tmp4_) : _vala_array_dup1 (data->_tmp4_, data->self->priv->buffer_length1)), data->self->priv->buffer_length1, data->self->priv->buffer_size, G_PRIORITY_DEFAULT, NULL, unity_app_info_manager_lookup_async_ready, data);
708
unity_io_read_stream_finish (data->_res_, &data->data, &data->data_size, &data->_inner_error_);
709
if (data->_inner_error_ != NULL) {
710
goto __catch15_g_error;
716
data->e = data->_inner_error_;
717
data->_inner_error_ = NULL;
719
g_warning ("unity-appinfo-manager.vala:277: Error reading '%s': %s", data->id, data->e->message);
721
_g_error_free0 (data->e);
722
_g_object_unref0 (data->input);
724
if (data->_state_ == 0) {
725
g_simple_async_result_complete_in_idle (data->_async_result);
727
g_simple_async_result_complete (data->_async_result);
729
g_object_unref (data->_async_result);
732
_g_error_free0 (data->e);
736
if (data->_inner_error_ != NULL) {
737
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
738
g_error_free (data->_inner_error_);
739
_g_object_unref0 (data->input);
741
if (data->_state_ == 0) {
742
g_simple_async_result_complete_in_idle (data->_async_result);
744
g_simple_async_result_complete (data->_async_result);
746
g_object_unref (data->_async_result);
750
data->keyfile = g_key_file_new ();
752
g_key_file_load_from_data (data->keyfile, (const char*) data->data, data->data_size, G_KEY_FILE_NONE, &data->_inner_error_);
753
if (data->_inner_error_ != NULL) {
754
goto __catch16_g_error;
760
data->ee = data->_inner_error_;
761
data->_inner_error_ = NULL;
763
g_warning ("unity-appinfo-manager.vala:288: Error parsing '%s': %s", data->id, data->ee->message);
765
_g_error_free0 (data->ee);
766
_g_key_file_free0 (data->keyfile);
767
_g_object_unref0 (data->input);
769
if (data->_state_ == 0) {
770
g_simple_async_result_complete_in_idle (data->_async_result);
772
g_simple_async_result_complete (data->_async_result);
774
g_object_unref (data->_async_result);
777
_g_error_free0 (data->ee);
781
if (data->_inner_error_ != NULL) {
782
g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
783
g_error_free (data->_inner_error_);
790
784
_g_key_file_free0 (data->keyfile);
791
785
_g_object_unref0 (data->input);