"Public members Fl::awake_ring_*_ should be private" (#559) - cont'd

This commit is contained in:
ManoloFLTK 2022-12-10 10:19:54 +01:00
parent e72fa007e7
commit df059de37e
4 changed files with 9 additions and 5 deletions

View File

@ -135,6 +135,7 @@ typedef void (*Fl_Clipboard_Notify_Handler)(int source, void *data);
state information and global methods for the current application.
*/
class FL_EXPORT Fl {
friend Fl_System_Driver;
Fl() {} // no constructor!
private:
@ -310,7 +311,6 @@ private:
static int awake_ring_head_;
static int awake_ring_tail_;
public:
static bool equal_awake_ring_ends();
static const char* scheme_;
static Fl_Image* scheme_bg_;

View File

@ -63,6 +63,7 @@ protected:
// implement once for each platform
static Fl_System_Driver *newSystemDriver();
Fl_System_Driver();
static bool awake_ring_empty();
public:
virtual ~Fl_System_Driver();
static int command_key;

View File

@ -201,8 +201,11 @@ void Fl::unlock() {
#ifndef FL_DOXYGEN
bool Fl::equal_awake_ring_ends() {
return awake_ring_head_ == Fl::awake_ring_tail_;
bool Fl_System_Driver::awake_ring_empty() {
Fl::system_driver()->lock_ring();
bool retval = (Fl::awake_ring_head_ == Fl::awake_ring_tail_);
Fl::system_driver()->unlock_ring();
return retval;
}
#endif // FL_DOXYGEN

View File

@ -491,7 +491,7 @@ double Fl_WinAPI_System_Driver::wait(double time_to_wait) {
DispatchMessageW(&fl_msg);
}
// The following conditional test: !Fl::equal_awake_ring_ends()
// The following conditional test: !Fl_System_Driver::awake_ring_empty()
// equivalent to:
// (Fl::awake_ring_head_ != Fl::awake_ring_tail_)
// is a workaround / fix for STR #3143. This works, but a better solution
@ -512,7 +512,7 @@ double Fl_WinAPI_System_Driver::wait(double time_to_wait) {
// recover and process any pending awake callbacks.
// Normally the ring buffer head and tail indices will match and this
// comparison will do nothing. Addresses STR #3143
if (!Fl::equal_awake_ring_ends()) {
if (!Fl_System_Driver::awake_ring_empty()) {
process_awake_handler_requests();
}