~leprechaun-team/+junk/unity-use-patches

« back to all changes in this revision

Viewing changes to unity/unity-appinfo-manager.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2010-09-09 19:13:29 UTC
  • mfrom: (1.1.15 upstream)
  • Revision ID: james.westby@ubuntu.com-20100909191329-j3odkmn02roj91b1
Tags: 0.2.36-0ubuntu1
* New upstream release:
  - Fix width of home-button on panel, so groove aligns with right edge of
    launcher, fixes (LP: #630031)
  - migration script to transition first time new people to unity
    (LP: #622146)
  - Quicklist name disappearing (LP: #627666)
* debian/unity.install:
  - install libexec in unity package (for migration tool)
* debian/libunity0.symbols:
  - update symbol

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* unity-appinfo-manager.c generated by valac 0.9.7, the Vala compiler
 
1
/* unity-appinfo-manager.c generated by valac, the Vala compiler
2
2
 * generated from unity-appinfo-manager.vala, do not modify */
3
3
 
4
4
/*
110
110
enum  {
111
111
        UNITY_APP_INFO_MANAGER_DUMMY_PROPERTY
112
112
};
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);
142
142
 
143
143
 
144
144
static UnityAppInfoManager* unity_app_info_manager_construct (GType object_type) {
 
145
        GError * _inner_error_;
145
146
        UnityAppInfoManager * self;
146
147
        GeeMap* _tmp0_;
147
148
        GeeMap* _tmp1_;
148
149
        guchar* _tmp2_;
149
150
        GeeMap* _tmp3_;
150
 
        GError * _inner_error_ = NULL;
 
151
        _inner_error_ = NULL;
151
152
        self = (UnityAppInfoManager*) g_object_new (object_type, NULL);
152
153
        self->priv->appinfo_by_id = (_tmp0_ = (GeeMap*) gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_APP_INFO, (GBoxedCopyFunc) g_object_ref, g_object_unref, g_str_hash, g_str_equal, NULL), _g_object_unref0 (self->priv->appinfo_by_id), _tmp0_);
153
154
        self->priv->categories_by_id = (_tmp1_ = (GeeMap*) gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, GEE_TYPE_LIST, (GBoxedCopyFunc) g_object_ref, g_object_unref, g_str_hash, g_str_equal, NULL), _g_object_unref0 (self->priv->categories_by_id), _tmp1_);
227
228
}
228
229
 
229
230
 
230
 
/**
231
 
     * Get a ref to the singleton AppInfoManager
232
 
     */
233
231
static gpointer _g_object_ref0 (gpointer self) {
234
232
        return self ? g_object_ref (self) : NULL;
235
233
}
274
272
}
275
273
 
276
274
 
277
 
/**
278
 
     * Look up an AppInfo given its desktop id or absolute path. The desktop id
279
 
     * is the base filename of the .desktop file for the application including
280
 
     * the .desktop extension.
281
 
     *
282
 
     * If the AppInfo is not already cached this method will do synchronous
283
 
     * IO to look it up.
284
 
     */
285
275
GAppInfo* unity_app_info_manager_lookup (UnityAppInfoManager* self, const char* id) {
286
276
        GAppInfo* result = NULL;
 
277
        GError * _inner_error_;
287
278
        GAppInfo* appinfo;
288
279
        GKeyFile* keyfile;
289
 
        GError * _inner_error_ = NULL;
290
280
        g_return_val_if_fail (self != NULL, NULL);
291
281
        g_return_val_if_fail (id != NULL, NULL);
 
282
        _inner_error_ = NULL;
292
283
        if (gee_map_has_key (self->priv->appinfo_by_id, id)) {
293
284
                result = (GAppInfo*) gee_map_get (self->priv->appinfo_by_id, id);
294
285
                return result;
389
380
                path = g_build_filename ("applications", id, NULL, NULL);
390
381
                full_path = NULL;
391
382
                {
 
383
                        char* _tmp5_;
392
384
                        char* _tmp4_ = NULL;
393
 
                        char* _tmp5_;
394
385
                        g_key_file_load_from_data_dirs (keyfile, path, &_tmp4_, G_KEY_FILE_NONE, &_inner_error_);
395
386
                        full_path = (_tmp5_ = _tmp4_, _g_free0 (full_path), _tmp5_);
396
387
                        if (_inner_error_ != NULL) {
435
426
                GAppInfo* _tmp8_;
436
427
                appinfo = (_tmp8_ = (GAppInfo*) g_desktop_app_info_new_from_keyfile (keyfile), _g_object_unref0 (appinfo), _tmp8_);
437
428
                {
 
429
                        char** _tmp10_;
 
430
                        gint _categories_size_;
438
431
                        gint categories_length1;
439
 
                        gint _categories_size_;
440
 
                        char** _tmp10_;
441
432
                        gsize _tmp9_;
442
433
                        char** categories;
443
434
                        GeeArrayList* cats;
501
492
}
502
493
 
503
494
 
504
 
/**
505
 
     * Look up XDG categories for for desktop id or file path @id.
506
 
     * Returns null if id is not found.
507
 
     * This method will do sync IO if the desktop file for @id is not
508
 
     * already cached. So if you are living in an async world you must first
509
 
     * do an async call to lookup_async(id) before calling this method, in which
510
 
     * case no sync io will be done.
511
 
     */
512
495
GeeList* unity_app_info_manager_get_categories (UnityAppInfoManager* self, const char* id) {
513
496
        GeeList* result = NULL;
514
497
        GAppInfo* appinfo;
568
551
}
569
552
 
570
553
 
571
 
/**
572
 
     * Look up an AppInfo given its desktop id or absolute path.
573
 
     * The desktop id is the base filename of the .desktop file for the
574
 
     * application including the .desktop extension.
575
 
     *
576
 
     * If the AppInfo is not already cached this method will do asynchronous
577
 
     * IO to look it up.
578
 
     */
579
554
static guchar* _vala_array_dup1 (guchar* self, int length) {
580
555
        return g_memdup (self, length * sizeof (guchar));
581
556
}
585
560
        switch (data->_state_) {
586
561
                case 0:
587
562
                goto _state_0;
588
 
                default:
589
 
                g_assert_not_reached ();
590
563
                case 3:
591
564
                goto _state_3;
592
565
                case 4:
593
566
                goto _state_4;
594
567
                case 5:
595
568
                goto _state_5;
 
569
                default:
 
570
                g_assert_not_reached ();
596
571
        }
597
572
        _state_0:
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);
600
 
                {
601
 
                        if (data->_state_ == 0) {
602
 
                                g_simple_async_result_complete_in_idle (data->_async_result);
603
 
                        } else {
604
 
                                g_simple_async_result_complete (data->_async_result);
605
 
                        }
606
 
                        g_object_unref (data->_async_result);
607
 
                        return FALSE;
608
 
                }
609
 
        }
610
 
        if (g_str_has_prefix (data->id, "/")) {
611
 
                data->f = g_file_new_for_path (data->id);
612
 
                data->_state_ = 3;
613
 
                g_file_read_async (data->f, G_PRIORITY_DEFAULT, NULL, unity_app_info_manager_lookup_async_ready, data);
614
 
                return FALSE;
615
 
                _state_3:
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);
 
573
        {
 
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);
622
576
                        {
623
577
                                if (data->_state_ == 0) {
624
578
                                        g_simple_async_result_complete_in_idle (data->_async_result);
629
583
                                return FALSE;
630
584
                        }
631
585
                }
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)) {
636
 
                        {
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);
 
588
                        data->_state_ = 3;
 
589
                        g_file_read_async (data->f, G_PRIORITY_DEFAULT, NULL, unity_app_info_manager_lookup_async_ready, data);
 
590
                        return FALSE;
 
591
                        _state_3:
 
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);
 
598
                                {
 
599
                                        if (data->_state_ == 0) {
 
600
                                                g_simple_async_result_complete_in_idle (data->_async_result);
 
601
                                        } else {
 
602
                                                g_simple_async_result_complete (data->_async_result);
 
603
                                        }
 
604
                                        g_object_unref (data->_async_result);
 
605
                                        return FALSE;
 
606
                                }
 
607
                        }
 
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)) {
 
612
                                {
 
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;
 
617
                                                }
 
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_);
 
624
                                                return FALSE;
 
625
                                        }
 
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);
 
630
                                }
 
631
                                goto __finally14;
 
632
                                __catch14_g_io_error:
 
633
                                {
 
634
                                        data->ioe = data->_inner_error_;
 
635
                                        data->_inner_error_ = NULL;
 
636
                                        {
 
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);
 
640
                                        }
 
641
                                }
 
642
                                __finally14:
638
643
                                if (data->_inner_error_ != NULL) {
639
 
                                        if (data->_inner_error_->domain == G_IO_ERROR) {
640
 
                                                goto __catch14_g_io_error;
641
 
                                        }
 
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_);
648
 
                                        return FALSE;
649
 
                                }
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);
654
 
                        }
655
 
                        goto __finally14;
656
 
                        __catch14_g_io_error:
657
 
                        {
658
 
                                data->ioe = data->_inner_error_;
659
 
                                data->_inner_error_ = NULL;
660
 
                                {
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);
664
 
                                }
665
 
                        }
666
 
                        __finally14:
 
650
                                        {
 
651
                                                if (data->_state_ == 0) {
 
652
                                                        g_simple_async_result_complete_in_idle (data->_async_result);
 
653
                                                } else {
 
654
                                                        g_simple_async_result_complete (data->_async_result);
 
655
                                                }
 
656
                                                g_object_unref (data->_async_result);
 
657
                                                return FALSE;
 
658
                                        }
 
659
                                }
 
660
                        }
 
661
                        _g_free0 (data->dir_uri);
 
662
                        _g_object_unref0 (data->dir);
 
663
                        _g_object_unref0 (data->f);
 
664
                } else {
 
665
                        data->path = g_build_filename ("applications", data->id, NULL, NULL);
 
666
                        data->_state_ = 4;
 
667
                        unity_io_open_from_data_dirs (data->path, unity_app_info_manager_lookup_async_ready, data);
 
668
                        return FALSE;
 
669
                        _state_4:
 
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);
674
676
                                {
675
677
                                        if (data->_state_ == 0) {
681
683
                                        return FALSE;
682
684
                                }
683
685
                        }
684
 
                }
685
 
                _g_free0 (data->dir_uri);
686
 
                _g_object_unref0 (data->dir);
687
 
                _g_object_unref0 (data->f);
688
 
        } else {
689
 
                data->path = g_build_filename ("applications", data->id, NULL, NULL);
690
 
                data->_state_ = 4;
691
 
                unity_io_open_from_data_dirs (data->path, unity_app_info_manager_lookup_async_ready, data);
692
 
                return FALSE;
693
 
                _state_4:
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);
700
 
                        {
701
 
                                if (data->_state_ == 0) {
702
 
                                        g_simple_async_result_complete_in_idle (data->_async_result);
703
 
                                } else {
704
 
                                        g_simple_async_result_complete (data->_async_result);
705
 
                                }
706
 
                                g_object_unref (data->_async_result);
707
 
                                return FALSE;
708
 
                        }
709
 
                }
710
 
                data->input = (data->_tmp3_ = data->_tmp2_, _g_object_unref0 (data->input), data->_tmp3_);
711
 
                _g_free0 (data->path);
712
 
        }
713
 
        if (data->input == NULL) {
714
 
                gee_map_set (data->self->priv->appinfo_by_id, data->id, NULL);
715
 
                data->result = NULL;
716
 
                _g_object_unref0 (data->input);
717
 
                {
718
 
                        if (data->_state_ == 0) {
719
 
                                g_simple_async_result_complete_in_idle (data->_async_result);
720
 
                        } else {
721
 
                                g_simple_async_result_complete (data->_async_result);
722
 
                        }
723
 
                        g_object_unref (data->_async_result);
724
 
                        return FALSE;
725
 
                }
726
 
        }
727
 
        {
728
 
                data->_state_ = 5;
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);
730
 
                return FALSE;
731
 
                _state_5:
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;
735
 
                }
736
 
        }
737
 
        goto __finally15;
738
 
        __catch15_g_error:
739
 
        {
740
 
                data->e = data->_inner_error_;
741
 
                data->_inner_error_ = NULL;
742
 
                {
743
 
                        g_warning ("unity-appinfo-manager.vala:277: Error reading '%s': %s", data->id, data->e->message);
744
 
                        data->result = NULL;
745
 
                        _g_error_free0 (data->e);
746
 
                        _g_object_unref0 (data->input);
747
 
                        {
748
 
                                if (data->_state_ == 0) {
749
 
                                        g_simple_async_result_complete_in_idle (data->_async_result);
750
 
                                } else {
751
 
                                        g_simple_async_result_complete (data->_async_result);
752
 
                                }
753
 
                                g_object_unref (data->_async_result);
754
 
                                return FALSE;
755
 
                        }
756
 
                        _g_error_free0 (data->e);
757
 
                }
758
 
        }
759
 
        __finally15:
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);
764
 
                {
765
 
                        if (data->_state_ == 0) {
766
 
                                g_simple_async_result_complete_in_idle (data->_async_result);
767
 
                        } else {
768
 
                                g_simple_async_result_complete (data->_async_result);
769
 
                        }
770
 
                        g_object_unref (data->_async_result);
771
 
                        return FALSE;
772
 
                }
773
 
        }
774
 
        data->keyfile = g_key_file_new ();
775
 
        {
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;
779
 
                }
780
 
        }
781
 
        goto __finally16;
782
 
        __catch16_g_error:
783
 
        {
784
 
                data->ee = data->_inner_error_;
785
 
                data->_inner_error_ = NULL;
786
 
                {
787
 
                        g_warning ("unity-appinfo-manager.vala:288: Error parsing '%s': %s", data->id, data->ee->message);
788
 
                        data->result = NULL;
789
 
                        _g_error_free0 (data->ee);
 
688
                }
 
689
                if (data->input == NULL) {
 
690
                        gee_map_set (data->self->priv->appinfo_by_id, data->id, NULL);
 
691
                        data->result = NULL;
 
692
                        _g_object_unref0 (data->input);
 
693
                        {
 
694
                                if (data->_state_ == 0) {
 
695
                                        g_simple_async_result_complete_in_idle (data->_async_result);
 
696
                                } else {
 
697
                                        g_simple_async_result_complete (data->_async_result);
 
698
                                }
 
699
                                g_object_unref (data->_async_result);
 
700
                                return FALSE;
 
701
                        }
 
702
                }
 
703
                {
 
704
                        data->_state_ = 5;
 
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);
 
706
                        return FALSE;
 
707
                        _state_5:
 
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;
 
711
                        }
 
712
                }
 
713
                goto __finally15;
 
714
                __catch15_g_error:
 
715
                {
 
716
                        data->e = data->_inner_error_;
 
717
                        data->_inner_error_ = NULL;
 
718
                        {
 
719
                                g_warning ("unity-appinfo-manager.vala:277: Error reading '%s': %s", data->id, data->e->message);
 
720
                                data->result = NULL;
 
721
                                _g_error_free0 (data->e);
 
722
                                _g_object_unref0 (data->input);
 
723
                                {
 
724
                                        if (data->_state_ == 0) {
 
725
                                                g_simple_async_result_complete_in_idle (data->_async_result);
 
726
                                        } else {
 
727
                                                g_simple_async_result_complete (data->_async_result);
 
728
                                        }
 
729
                                        g_object_unref (data->_async_result);
 
730
                                        return FALSE;
 
731
                                }
 
732
                                _g_error_free0 (data->e);
 
733
                        }
 
734
                }
 
735
                __finally15:
 
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);
 
740
                        {
 
741
                                if (data->_state_ == 0) {
 
742
                                        g_simple_async_result_complete_in_idle (data->_async_result);
 
743
                                } else {
 
744
                                        g_simple_async_result_complete (data->_async_result);
 
745
                                }
 
746
                                g_object_unref (data->_async_result);
 
747
                                return FALSE;
 
748
                        }
 
749
                }
 
750
                data->keyfile = g_key_file_new ();
 
751
                {
 
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;
 
755
                        }
 
756
                }
 
757
                goto __finally16;
 
758
                __catch16_g_error:
 
759
                {
 
760
                        data->ee = data->_inner_error_;
 
761
                        data->_inner_error_ = NULL;
 
762
                        {
 
763
                                g_warning ("unity-appinfo-manager.vala:288: Error parsing '%s': %s", data->id, data->ee->message);
 
764
                                data->result = NULL;
 
765
                                _g_error_free0 (data->ee);
 
766
                                _g_key_file_free0 (data->keyfile);
 
767
                                _g_object_unref0 (data->input);
 
768
                                {
 
769
                                        if (data->_state_ == 0) {
 
770
                                                g_simple_async_result_complete_in_idle (data->_async_result);
 
771
                                        } else {
 
772
                                                g_simple_async_result_complete (data->_async_result);
 
773
                                        }
 
774
                                        g_object_unref (data->_async_result);
 
775
                                        return FALSE;
 
776
                                }
 
777
                                _g_error_free0 (data->ee);
 
778
                        }
 
779
                }
 
780
                __finally16:
 
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);
792
786
                        {
798
792
                                g_object_unref (data->_async_result);
799
793
                                return FALSE;
800
794
                        }
801
 
                        _g_error_free0 (data->ee);
802
795
                }
803
 
        }
804
 
        __finally16:
805
 
        if (data->_inner_error_ != NULL) {
806
 
                g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
807
 
                g_error_free (data->_inner_error_);
 
796
                data->appinfo = g_desktop_app_info_new_from_keyfile (data->keyfile);
 
797
                gee_map_set (data->self->priv->appinfo_by_id, data->id, (GAppInfo*) data->appinfo);
 
798
                g_free (data->data);
 
799
                data->result = (GAppInfo*) data->appinfo;
808
800
                _g_key_file_free0 (data->keyfile);
809
801
                _g_object_unref0 (data->input);
810
802
                {
816
808
                        g_object_unref (data->_async_result);
817
809
                        return FALSE;
818
810
                }
819
 
        }
820
 
        data->appinfo = g_desktop_app_info_new_from_keyfile (data->keyfile);
821
 
        gee_map_set (data->self->priv->appinfo_by_id, data->id, (GAppInfo*) data->appinfo);
822
 
        g_free (data->data);
823
 
        data->result = (GAppInfo*) data->appinfo;
824
 
        _g_key_file_free0 (data->keyfile);
825
 
        _g_object_unref0 (data->input);
826
 
        {
827
 
                if (data->_state_ == 0) {
828
 
                        g_simple_async_result_complete_in_idle (data->_async_result);
829
 
                } else {
830
 
                        g_simple_async_result_complete (data->_async_result);
831
 
                }
832
 
                g_object_unref (data->_async_result);
833
 
                return FALSE;
834
 
        }
835
 
        _g_object_unref0 (data->appinfo);
836
 
        _g_key_file_free0 (data->keyfile);
837
 
        _g_object_unref0 (data->input);
 
811
                _g_object_unref0 (data->appinfo);
 
812
                _g_key_file_free0 (data->keyfile);
 
813
                _g_object_unref0 (data->input);
 
814
        }
838
815
        {
839
816
                if (data->_state_ == 0) {
840
817
                        g_simple_async_result_complete_in_idle (data->_async_result);
857
834
        unity_app_info_manager_parent_class = g_type_class_peek_parent (klass);
858
835
        g_type_class_add_private (klass, sizeof (UnityAppInfoManagerPrivate));
859
836
        G_OBJECT_CLASS (klass)->finalize = unity_app_info_manager_finalize;
860
 
        /**
861
 
             * Emitted whenever an AppInfo in any of the monitored paths change.
862
 
             * Note that @new_appinfo may be null in case it has been removed.
863
 
             */
864
837
        g_signal_new ("changed", UNITY_TYPE_APP_INFO_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_OBJECT, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_APP_INFO);
865
838
}
866
839
 
881
854
}
882
855
 
883
856
 
884
 
/**
885
 
   * A singleton class that caches GLib.AppInfo objects.
886
 
   * Singletons are evil, yes, but this on slightly less
887
 
   * so because the exposed API is immutable.
888
 
   *
889
 
   * To detect when any of the managed AppInfo objects changes, appears,
890
 
   * or goes away listen for the 'changed' signal.
891
 
   */
892
857
GType unity_app_info_manager_get_type (void) {
893
858
        static volatile gsize unity_app_info_manager_type_id__volatile = 0;
894
859
        if (g_once_init_enter (&unity_app_info_manager_type_id__volatile)) {