diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2016-12-06 23:21:52 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2016-12-06 23:21:52 +0000 |
| commit | 0a1eed150a9d9215f70f1e50db2ec555199aee7d (patch) | |
| tree | 3b1022c123764b19c16b92a936de3f59f7a51581 /src/drivers/PicoSDL | |
| parent | 307dd033f0a803265a04db51a003a71c4be383dc (diff) | |
Fixed OS X SDL double buffering issue and mouse dragging.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12139 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/PicoSDL')
| -rw-r--r-- | src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx | 6 | ||||
| -rw-r--r-- | src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx | 6 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx b/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx index b43e0c191..2645519cb 100644 --- a/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx +++ b/src/drivers/PicoSDL/Fl_PicoSDL_Screen_Driver.cxx @@ -112,9 +112,9 @@ double Fl_PicoSDL_Screen_Driver::wait(double time_to_wait) Fl::e_y = e.motion.y; Fl::e_x_root = e.motion.x + window->x(); Fl::e_y_root = e.motion.y + window->y(); - if (e.motion.state & SDL_BUTTON_LMASK) Fl::e_state |= FL_BUTTON1; else Fl::e_state &= ~FL_BUTTON1; break; - if (e.motion.state & SDL_BUTTON_MMASK) Fl::e_state |= FL_BUTTON2; else Fl::e_state &= ~FL_BUTTON2; break; - if (e.motion.state & SDL_BUTTON_RMASK) Fl::e_state |= FL_BUTTON3; else Fl::e_state &= ~FL_BUTTON3; break; + if (e.motion.state & SDL_BUTTON_LMASK) Fl::e_state |= FL_BUTTON1; else Fl::e_state &= ~FL_BUTTON1; + if (e.motion.state & SDL_BUTTON_MMASK) Fl::e_state |= FL_BUTTON2; else Fl::e_state &= ~FL_BUTTON2; + if (e.motion.state & SDL_BUTTON_RMASK) Fl::e_state |= FL_BUTTON3; else Fl::e_state &= ~FL_BUTTON3; if ((e.motion.state & (SDL_BUTTON_LMASK|SDL_BUTTON_MMASK|SDL_BUTTON_RMASK)) == 0 ) Fl::handle(FL_MOVE, window); else diff --git a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H index b525983ad..87b4b0b1d 100644 --- a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H +++ b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.H @@ -35,6 +35,7 @@ class FL_EXPORT Fl_PicoSDL_Window_Driver : public Fl_Pico_Window_Driver { SDL_Window *pNativeWindow; + SDL_Texture *pNativeTexture; public: Fl_PicoSDL_Window_Driver(Fl_Window *win); virtual ~Fl_PicoSDL_Window_Driver(); diff --git a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx index 7b165271f..78e3683d9 100644 --- a/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx +++ b/src/drivers/PicoSDL/Fl_PicoSDL_Window_Driver.cxx @@ -76,6 +76,7 @@ Fl_X *Fl_PicoSDL_Window_Driver::makeWindow() pNativeWindow = SDL_CreateWindow(pWindow->label(), pWindow->x(), pWindow->y(), pWindow->w(), pWindow->h(), 0); } x->xid = SDL_CreateRenderer(pNativeWindow, -1, SDL_RENDERER_ACCELERATED); + pNativeTexture = SDL_CreateTexture((SDL_Renderer*)x->xid, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_TARGET, w(), h()); x->next = Fl_X::first; wait_for_expose_value = 0; pWindow->i = x; @@ -95,6 +96,9 @@ Fl_X *Fl_PicoSDL_Window_Driver::makeWindow() void Fl_PicoSDL_Window_Driver::draw_end() { Fl_X *i = Fl_X::i(pWindow); + SDL_SetRenderTarget((SDL_Renderer*)pWindow->i->xid, 0L); + //SDL_RenderClear((SDL_Renderer*)i->xid); + SDL_RenderCopy((SDL_Renderer*)i->xid, pNativeTexture, 0L, 0L); SDL_RenderPresent((SDL_Renderer*)i->xid); } @@ -102,6 +106,7 @@ void Fl_PicoSDL_Window_Driver::draw_end() void Fl_PicoSDL_Window_Driver::make_current() { fl_window = pWindow->i->xid; + SDL_SetRenderTarget((SDL_Renderer*)pWindow->i->xid, pNativeTexture); } @@ -112,7 +117,6 @@ void Fl_PicoSDL_Window_Driver::show() { } - // // End of "$Id$". //
\ No newline at end of file |
