Browse Source

VirGLDemo: Make a factory function for Demo and propagate errors

This removes a measly 1 FIXME :))
Baitinq 2 years ago
parent
commit
c4f68bde57

+ 2 - 1
Userland/Demos/VirGLDemo/VirGLDemo.cpp

@@ -316,7 +316,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     window->set_has_alpha_channel(false);
     window->set_has_alpha_channel(false);
     window->set_alpha_hit_threshold(1);
     window->set_alpha_hit_threshold(1);
 
 
-    auto demo = TRY(window->try_set_main_widget<Demo>());
+    auto demo = TRY(Demo::create());
+    window->set_main_widget(demo);
 
 
     auto app_icon = GUI::Icon::default_icon("app-cube"sv);
     auto app_icon = GUI::Icon::default_icon("app-cube"sv);
     window->set_icon(app_icon.bitmap_for_size(16));
     window->set_icon(app_icon.bitmap_for_size(16));

+ 10 - 3
Userland/Demos/VirGLDemo/Widget.cpp

@@ -9,11 +9,18 @@
 
 
 #include "Widget.h"
 #include "Widget.h"
 
 
-Demo::Demo()
+ErrorOr<NonnullRefPtr<Demo>> Demo::create()
 {
 {
-    m_bitmap = Gfx::Bitmap::try_create(Gfx::BitmapFormat::BGRx8888, { DRAWTARGET_WIDTH, DRAWTARGET_HEIGHT }).release_value_but_fixme_should_propagate_errors();
-    m_bitmap->fill(Gfx::Color::Black);
+    auto demo = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) Demo));
+
+    demo->m_bitmap = TRY(Gfx::Bitmap::try_create(Gfx::BitmapFormat::BGRx8888, { DRAWTARGET_WIDTH, DRAWTARGET_HEIGHT }));
+    demo->m_bitmap->fill(Gfx::Color::Black);
+
+    return demo;
+}
 
 
+Demo::Demo()
+{
     m_cycles = 0;
     m_cycles = 0;
 
 
     stop_timer();
     stop_timer();

+ 1 - 0
Userland/Demos/VirGLDemo/Widget.h

@@ -16,6 +16,7 @@ constexpr size_t DRAWTARGET_HEIGHT = 500;
 class Demo final : public GUI::Widget {
 class Demo final : public GUI::Widget {
     C_OBJECT(Demo)
     C_OBJECT(Demo)
 public:
 public:
+    static ErrorOr<NonnullRefPtr<Demo>> create();
     virtual ~Demo() override;
     virtual ~Demo() override;
     bool show_window_frame() const { return m_show_window_frame; }
     bool show_window_frame() const { return m_show_window_frame; }