diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2016-03-13 22:16:37 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2016-03-13 22:16:37 +0000 |
| commit | b496d18b85917106c48e8e6f74115b3122b603d1 (patch) | |
| tree | 4d96befa4377a81c89c6a32f4d66220199572938 /src/drivers/PicoSDL | |
| parent | 30756ae3500a62bd8f63b4df3eb3ca8f6b8b0b70 (diff) | |
Fixed 'flush()' code for single, double, and overlay buffering
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11359 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/PicoSDL')
| -rw-r--r-- | src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx | 42 | ||||
| -rw-r--r-- | src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H | 6 | ||||
| -rw-r--r-- | src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx | 30 |
3 files changed, 55 insertions, 23 deletions
diff --git a/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx b/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx index 82d94dcd5..942c5a523 100644 --- a/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx +++ b/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx @@ -52,24 +52,27 @@ double Fl_PicoSDL_Screen_Driver::wait(double time_to_wait) switch (e.type) { case SDL_QUIT: exit(0); - case SDL_WINDOWEVENT_EXPOSED: - case SDL_WINDOWEVENT_SHOWN: - { // not happening! - //event->window.windowID - if ( !window ) break;; - Fl_X *i = Fl_X::i(Fl::first_window()); - i->wait_for_expose = 0; - - if ( i->region ) { - XDestroyRegion(i->region); - i->region = 0; + case SDL_WINDOWEVENT: + switch (e.window.event) { + case SDL_WINDOWEVENT_EXPOSED: + case SDL_WINDOWEVENT_SHOWN: + { + //event->window.windowID + if ( !window ) break;; + Fl_X *i = Fl_X::i(Fl::first_window()); + i->wait_for_expose = 0; + + if ( i->region ) { + XDestroyRegion(i->region); + i->region = 0; + } + window->clear_damage(FL_DAMAGE_ALL); + i->flush(); + window->clear_damage(); + Fl_X::first->wait_for_expose = 0; + } + break; } - window->clear_damage(FL_DAMAGE_ALL); - i->flush(); - window->clear_damage(); - Fl_X::first->wait_for_expose = 0; - } - break; case SDL_MOUSEBUTTONDOWN: if (!window) break; Fl::e_is_click = e.button.clicks; @@ -204,6 +207,11 @@ void Fl::remove_fd(int) { } +void Fl_X::flush() +{ + w->flush(); +} + // // End of "$Id: Fl_PicoSDL_Screen_Driver.cxx 11253 2016-03-01 00:54:21Z matt $". diff --git a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H index cc4fb81c4..7cb2e7c43 100644 --- a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H +++ b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H @@ -40,7 +40,11 @@ public: virtual ~Fl_PicoSDL_Window_Driver(); virtual Fl_X *makeWindow(); - virtual void flush(); + + // --- window management + virtual void flush_single(); + virtual void flush_double(); + virtual void flush_overlay(); }; diff --git a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx index a9a7fc95f..346eea241 100644 --- a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx +++ b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx @@ -72,7 +72,7 @@ Fl_X *Fl_PicoSDL_Window_Driver::makeWindow() pWindow->set_visible(); pWindow->redraw(); - flush(); + pWindow->flush(); int old_event = Fl::e_number; pWindow->handle(Fl::e_number = FL_SHOW); Fl::e_number = old_event; @@ -81,14 +81,34 @@ Fl_X *Fl_PicoSDL_Window_Driver::makeWindow() } -void Fl_PicoSDL_Window_Driver::flush() +void Fl_PicoSDL_Window_Driver::flush_single() { - SDL_RenderClear((SDL_Renderer*)fl_window); - pWindow->flush(); - SDL_RenderPresent((SDL_Renderer*)fl_window); + if (!pWindow->shown()) return; + pWindow->make_current(); + Fl_X *i = Fl_X::i(pWindow); + if (!i) return; + fl_clip_region(i->region); + i->region = 0; +// SDL_RenderClear((SDL_Renderer*)i->xid); + pWindow->draw(); + SDL_RenderPresent((SDL_Renderer*)i->xid); +} + + +void Fl_PicoSDL_Window_Driver::flush_double() +{ + flush_single(); } +void Fl_PicoSDL_Window_Driver::flush_overlay() +{ + flush_single(); + // draw_overlay(); +} + + + // // End of "$Id: Fl_PicoSDL_Window_Driver.cxx 11253 2016-03-01 00:54:21Z matt $". //
\ No newline at end of file |
