do not crash in IO Selector when there are no ports
authorPaul Davis <paul@linuxaudiosystems.com>
Sat, 11 Nov 2006 23:38:13 +0000 (23:38 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Sat, 11 Nov 2006 23:38:13 +0000 (23:38 +0000)
git-svn-id: svn://localhost/ardour2/trunk@1111 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/io_selector.cc

index e800f9311bcddb7dd1ca16cac8e5b518bd674043..4c1e94ce89404eb77f20fc31b3fd2721b6cc751e 100644 (file)
@@ -480,8 +480,10 @@ IOSelector::display_ports ()
        if (!selected_port_tview) {
                selected_port_tview = firsttview;
        }
-       
-       select_treeview (selected_port_tview);
+
+       if (selected_port_tview) {
+               select_treeview (selected_port_tview);
+       }
 }
 
 bool
@@ -645,6 +647,10 @@ IOSelector::select_next_treeview ()
 {
        slist<TreeView*>::iterator next;
 
+       if (port_displays.empty() || port_displays.size() == 1) {
+               return;
+       }
+
        for (slist<TreeView *>::iterator i = port_displays.begin(); i != port_displays.end(); ++i) {
 
                if ((*i)->get_name() == "IOSelectorPortListSelected") {
@@ -701,8 +707,6 @@ IOSelector::select_treeview (TreeView* tview)
                        gtk_widget_queue_draw (ccol->button);
                }
                
-               Port* port = reinterpret_cast<Port *> ((*i)->get_data (_("port")));
-               
                (*i)->set_name ("IOSelectorPortList");
                (*i)->queue_draw ();
        }