Fix/workaround crash:
authorCarl Hetherington <cth@carlh.net>
Fri, 3 May 2019 01:32:46 +0000 (01:32 +0000)
committerCarl Hetherington <cth@carlh.net>
Fri, 3 May 2019 11:35:17 +0000 (12:35 +0100)
../src/common/dpycmn.cpp(119): assert "n <GetCount ()" failed in wxDisplay (): An invalid index was passed to wxDisplay

seen on Ubuntu 19.04; I can't reproduce it myself but the user reports that
this fixes it.

src/wx/content_panel.cc

index a164ee977bf25686bce9170d594ab475e459926a..82caaf1ff01d4199cf08a62311c78426f11dc676 100644 (file)
@@ -94,8 +94,11 @@ ContentPanel::ContentPanel (wxNotebook* n, shared_ptr<Film> film, weak_ptr<FilmV
        }
 
        _splitter = new LimitedSplitter (n);
-       wxDisplay display (wxDisplay::GetFromWindow(_splitter));
-       wxRect screen = display.GetClientArea();
+       optional<wxRect> screen;
+       int const sn = wxDisplay::GetFromWindow(_splitter);
+       if (sn >= 0) {
+               screen = wxDisplay(sn).GetClientArea();
+       }
        wxPanel* top = new wxPanel (_splitter);
 
        _menu = new ContentMenu (_splitter);
@@ -150,7 +153,9 @@ ContentPanel::ContentPanel (wxNotebook* n, shared_ptr<Film> film, weak_ptr<FilmV
        /* This is a hack to try and make the content notebook a sensible size; large on big displays but small
           enough on small displays to leave space for the content area.
        */
-       _splitter->SplitHorizontally (top, _notebook, screen.height > 800 ? -600 : -150);
+       if (screen) {
+               _splitter->SplitHorizontally (top, _notebook, screen->height > 800 ? -600 : -150);
+       }
 
        _timing_panel = new TimingPanel (this, _film_viewer);
        _notebook->AddPage (_timing_panel, _("Timing"), false);