From 75aab442ebea2a14a8bd96a0607d136662687b5d Mon Sep 17 00:00:00 2001 From: Wyatt Olson Date: Sat, 24 Apr 2010 15:23:09 -0600 Subject: [PATCH] Added patch by Jan to address crash at startup on ArchLinux 64 bit --- rtgui/placesbrowser.cc | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/rtgui/placesbrowser.cc b/rtgui/placesbrowser.cc index 564a3f414..11a9e68f7 100755 --- a/rtgui/placesbrowser.cc +++ b/rtgui/placesbrowser.cc @@ -78,37 +78,42 @@ PlacesBrowser::PlacesBrowser () : listener (NULL) { void PlacesBrowser::refreshPlacesList () { placesModel->clear (); - + // append home directory Glib::RefPtr hfile = Gio::File::create_for_path (Glib::get_home_dir ()); if (hfile) { + try { Glib::RefPtr info = safe_query_file_info (hfile); if (info) { - Gtk::TreeModel::Row newrow = *(placesModel->append()); - newrow[placesColumns.label] = info->get_display_name (); - newrow[placesColumns.icon] = info->get_icon (); - newrow[placesColumns.root] = hfile->get_parse_name (); - newrow[placesColumns.type] = 4; - newrow[placesColumns.rowSeparator] = false; + Gtk::TreeModel::Row newrow = *(placesModel->append()); + newrow[placesColumns.label] = info->get_display_name (); + newrow[placesColumns.icon] = info->get_icon (); + newrow[placesColumns.root] = hfile->get_parse_name (); + newrow[placesColumns.type] = 4; + newrow[placesColumns.rowSeparator] = false; } + } catch (Gio::Error&) { /* This will be thrown if the path doesn't exist */ } } + // append pictures directory hfile = Gio::File::create_for_path (Glib::get_user_special_dir (G_USER_DIRECTORY_PICTURES)); if (hfile) { + try { Glib::RefPtr info = safe_query_file_info (hfile); if (info) { - Gtk::TreeModel::Row newrow = *(placesModel->append()); - newrow[placesColumns.label] = info->get_display_name (); - newrow[placesColumns.icon] = info->get_icon (); - newrow[placesColumns.root] = hfile->get_parse_name (); - newrow[placesColumns.type] = 4; - newrow[placesColumns.rowSeparator] = false; + Gtk::TreeModel::Row newrow = *(placesModel->append()); + newrow[placesColumns.label] = info->get_display_name (); + newrow[placesColumns.icon] = info->get_icon (); + newrow[placesColumns.root] = hfile->get_parse_name (); + newrow[placesColumns.type] = 4; + newrow[placesColumns.rowSeparator] = false; } + } catch (Gio::Error&) { /* This will be thrown if the path doesn't exist */ } } - + if (placesModel->children().size()>0) { - Gtk::TreeModel::Row newrow = *(placesModel->append()); - newrow[placesColumns.rowSeparator] = true; + Gtk::TreeModel::Row newrow = *(placesModel->append()); + newrow[placesColumns.rowSeparator] = true; } // scan all drives