Thanks for your reply. From a quick test, it seems like un-checking "show suggestions" stops the crashes (and checking it again brings back the crashes). That's a good enough solution for me, thanks, but I'm happy to help with further investigations into this issue.
The version I am using is 1.1.12 on ubuntu 14.04.
Here are lines 3700 to 3730 of the /usr/share/gmusicbrowser/gmusicbrowser_list.pm (line 3716 is the one that says "destroy").
}
$self->StartIdleFilter if $self->{autofilter} || ($l>2 && !$self->{suggest});
if ($self->{suggest})
{ Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $timeout= $l<2 ? 0 : $l==2 ? 200 : 100;
if ($timeout) { $self->{suggest_timeout}= Glib::Timeout->add($timeout,\&UpdateSuggestionMenu,$self); }
else { $self->CloseSuggestionMenu; }
}
}
sub CloseSuggestionMenu
{ my $self=shift;
Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $menu= delete $self->{matchmenu};
return unless $menu;
$menu->cancel;
$menu->destroy;
}
sub UpdateSuggestionMenu
{ my $self=shift;
if ($self->{matchmenu} && !$self->{matchmenu}->mapped) { $self->CloseSuggestionMenu; }
Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $refresh= !!$self->{matchmenu};
my $menu= $self->{matchmenu} ||= Gtk2::Menu->new;
if ($refresh) { $menu->remove($_) for $menu->get_children; }
my $h=$self->size_request->height;
my $w=$self->size_request->width;
my $screen=$self->get_screen;
my $monitor=$screen->get_monitor_at_window($self->window);
The version I am using is 1.1.12 on ubuntu 14.04.
Here are lines 3700 to 3730 of the /usr/share/gmusicbrowser/gmusicbrowser_list.pm (line 3716 is the one that says "destroy").
}
$self->StartIdleFilter if $self->{autofilter} || ($l>2 && !$self->{suggest});
if ($self->{suggest})
{ Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $timeout= $l<2 ? 0 : $l==2 ? 200 : 100;
if ($timeout) { $self->{suggest_timeout}= Glib::Timeout->add($timeout,\&UpdateSuggestionMenu,$self); }
else { $self->CloseSuggestionMenu; }
}
}
sub CloseSuggestionMenu
{ my $self=shift;
Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $menu= delete $self->{matchmenu};
return unless $menu;
$menu->cancel;
$menu->destroy;
}
sub UpdateSuggestionMenu
{ my $self=shift;
if ($self->{matchmenu} && !$self->{matchmenu}->mapped) { $self->CloseSuggestionMenu; }
Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $refresh= !!$self->{matchmenu};
my $menu= $self->{matchmenu} ||= Gtk2::Menu->new;
if ($refresh) { $menu->remove($_) for $menu->get_children; }
my $h=$self->size_request->height;
my $w=$self->size_request->width;
my $screen=$self->get_screen;
my $monitor=$screen->get_monitor_at_window($self->window);