summaryrefslogtreecommitdiff
path: root/src/drivers/Android/Fl_Android_Screen_Driver.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2018-06-19 16:29:20 +0000
committerMatthias Melcher <fltk@matthiasm.com>2018-06-19 16:29:20 +0000
commite1bf7b920254deea542c9c09a344498982ba9424 (patch)
tree7201753805136c2db4d903bf4cbca159f3927840 /src/drivers/Android/Fl_Android_Screen_Driver.cxx
parentba58edb33c3e8665cb872548270ee4e98c4ec150 (diff)
Android: Clearing the desktop when a window is hidden.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12949 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/Android/Fl_Android_Screen_Driver.cxx')
-rw-r--r--src/drivers/Android/Fl_Android_Screen_Driver.cxx29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/drivers/Android/Fl_Android_Screen_Driver.cxx b/src/drivers/Android/Fl_Android_Screen_Driver.cxx
index 43ad41148..e295f5a1e 100644
--- a/src/drivers/Android/Fl_Android_Screen_Driver.cxx
+++ b/src/drivers/Android/Fl_Android_Screen_Driver.cxx
@@ -52,6 +52,17 @@ Fl_Screen_Driver *Fl_Screen_Driver::newScreenDriver()
extern int fl_send_system_handlers(void *e);
+/**
+ * Create the screen driver.
+ */
+Fl_Android_Screen_Driver::Fl_Android_Screen_Driver() :
+ super(),
+ pContentChanged(false),
+ pClearDesktop(false)
+{
+}
+
+
int Fl_Android_Screen_Driver::handle_app_command()
{
// get the command
@@ -242,9 +253,23 @@ double Fl_Android_Screen_Driver::wait(double time_to_wait)
fl_unlock_function();
handle_queued_events(time_to_wait);
fl_lock_function();
+ // FIXME: kludge to erase a window after it was hidden
+ if (pClearDesktop && fl_graphics_driver) {
+ ((Fl_Android_Graphics_Driver*)fl_graphics_driver)->make_current(nullptr);
+ fl_rectf(0, 0, 600, 800, FL_BLACK);
+ pClearDesktop = false;
+ pContentChanged = true;
+ }
Fl::flush();
} else {
// if there is wait time, show the pending changes and then handle the events
+ // FIXME: kludge to erase a window after it was hidden
+ if (pClearDesktop && fl_graphics_driver) {
+ ((Fl_Android_Graphics_Driver*)fl_graphics_driver)->make_current(nullptr);
+ fl_rectf(0, 0, 600, 800, FL_BLACK);
+ pClearDesktop = false;
+ pContentChanged = true;
+ }
Fl::flush();
if (Fl::idle && !in_idle) // 'idle' may have been set within flush()
time_to_wait = 0.0;
@@ -264,9 +289,9 @@ void Fl_Android_Screen_Driver::flush()
{
Fl_Screen_Driver::flush();
// FIXME: do this only if anything actually changed on screen (need to optimize)!
- if (pScreenContentChanged) {
+ if (pContentChanged) {
if (Fl_Android_Application::copy_screen())
- pScreenContentChanged = false;
+ pContentChanged = false;
}
}