aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/views/SkEvent.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-11-22 13:23:35 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-22 18:59:44 +0000
commit4f99e58252175f01c0b9ca1a5e2fc7acec6acec3 (patch)
tree64458810ed2962bbdcb470a4f199feade2be2b03 /src/views/SkEvent.cpp
parentd923a71a113d97dc87b4424c25d5b5019331db24 (diff)
Remove a huge pile of views code
All of this is dead when not using the old SkWindow framework. TBR=reed@google.com Bug: skia: Change-Id: I0f6ab18987a98469bfd367d5bc10967300dfd3ca Reviewed-on: https://skia-review.googlesource.com/75384 Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/views/SkEvent.cpp')
-rw-r--r--src/views/SkEvent.cpp280
1 files changed, 6 insertions, 274 deletions
diff --git a/src/views/SkEvent.cpp b/src/views/SkEvent.cpp
index c218ee419d..8102455979 100644
--- a/src/views/SkEvent.cpp
+++ b/src/views/SkEvent.cpp
@@ -9,13 +9,10 @@
#include "SkDOM.h"
#include "SkEvent.h"
-void SkEvent::initialize(const char* type, size_t typeLen,
- SkEventSinkID targetID) {
+void SkEvent::initialize(const char* type, size_t typeLen) {
fType = nullptr;
setType(type, typeLen);
f32 = 0;
- fTargetID = targetID;
- fTargetProc = nullptr;
#ifdef SK_DEBUG
fTime = 0;
fNextEvent = nullptr;
@@ -24,7 +21,7 @@ void SkEvent::initialize(const char* type, size_t typeLen,
SkEvent::SkEvent()
{
- initialize("", 0, 0);
+ initialize("", 0);
}
SkEvent::SkEvent(const SkEvent& src)
@@ -34,15 +31,15 @@ SkEvent::SkEvent(const SkEvent& src)
setType(src.fType);
}
-SkEvent::SkEvent(const SkString& type, SkEventSinkID targetID)
+SkEvent::SkEvent(const SkString& type)
{
- initialize(type.c_str(), type.size(), targetID);
+ initialize(type.c_str(), type.size());
}
-SkEvent::SkEvent(const char type[], SkEventSinkID targetID)
+SkEvent::SkEvent(const char type[])
{
SkASSERT(type);
- initialize(type, strlen(type), targetID);
+ initialize(type, strlen(type));
}
SkEvent::~SkEvent()
@@ -245,268 +242,3 @@ void SkEvent::inflate(const SkDOM& dom, const SkDOM::Node* node)
SkDebugf("\n");
}
#endif
-
-///////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef SK_DEBUG
-// #define SK_TRACE_EVENTSx
-#endif
-
-#ifdef SK_TRACE_EVENTS
- static void event_log(const char s[])
- {
- SkDEBUGF(("%s\n", s));
- }
-
- #define EVENT_LOG(s) event_log(s)
- #define EVENT_LOGN(s, n) do { SkString str(s); str.append(" "); str.appendS32(n); event_log(str.c_str()); } while (0)
-#else
- #define EVENT_LOG(s)
- #define EVENT_LOGN(s, n)
-#endif
-
-#include "SkMutex.h"
-#include "SkTime.h"
-
-class SkEvent_Globals {
-public:
- SkEvent_Globals() {
- fEventQHead = nullptr;
- fEventQTail = nullptr;
- fDelayQHead = nullptr;
- SkDEBUGCODE(fEventCounter = 0;)
- }
-
- SkMutex fEventMutex;
- SkEvent* fEventQHead, *fEventQTail;
- SkEvent* fDelayQHead;
- SkDEBUGCODE(int fEventCounter;)
-};
-
-static SkEvent_Globals& getGlobals() {
- // leak this, so we don't incure any shutdown perf hit
- static SkEvent_Globals* gGlobals = new SkEvent_Globals;
- return *gGlobals;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-void SkEvent::postDelay(SkMSec delay) {
- if (!fTargetID && !fTargetProc) {
- delete this;
- return;
- }
-
- if (delay) {
- this->postTime(GetMSecsSinceStartup() + delay);
- return;
- }
-
- SkEvent_Globals& globals = getGlobals();
-
- globals.fEventMutex.acquire();
- bool wasEmpty = SkEvent::Enqueue(this);
- globals.fEventMutex.release();
-
- // call outside of us holding the mutex
- if (wasEmpty) {
- SkEvent::SignalNonEmptyQueue();
- }
-}
-
-void SkEvent::postTime(SkMSec time) {
- if (!fTargetID && !fTargetProc) {
- delete this;
- return;
- }
-
- SkEvent_Globals& globals = getGlobals();
-
- globals.fEventMutex.acquire();
- SkMSec queueDelay = SkEvent::EnqueueTime(this, time);
- globals.fEventMutex.release();
-
- // call outside of us holding the mutex
- if ((int32_t)queueDelay != ~0) {
- SkEvent::SignalQueueTimer(queueDelay);
- }
-}
-
-bool SkEvent::Enqueue(SkEvent* evt) {
- SkEvent_Globals& globals = getGlobals();
- // gEventMutex acquired by caller
-
- SkASSERT(evt);
-
- bool wasEmpty = globals.fEventQHead == nullptr;
-
- if (globals.fEventQTail)
- globals.fEventQTail->fNextEvent = evt;
- globals.fEventQTail = evt;
- if (globals.fEventQHead == nullptr)
- globals.fEventQHead = evt;
- evt->fNextEvent = nullptr;
-
- SkDEBUGCODE(++globals.fEventCounter);
-
- return wasEmpty;
-}
-
-SkEvent* SkEvent::Dequeue() {
- SkEvent_Globals& globals = getGlobals();
- globals.fEventMutex.acquire();
-
- SkEvent* evt = globals.fEventQHead;
- if (evt) {
- SkDEBUGCODE(--globals.fEventCounter);
-
- globals.fEventQHead = evt->fNextEvent;
- if (globals.fEventQHead == nullptr) {
- globals.fEventQTail = nullptr;
- }
- }
- globals.fEventMutex.release();
-
- return evt;
-}
-
-bool SkEvent::QHasEvents() {
- SkEvent_Globals& globals = getGlobals();
-
- // this is not thread accurate, need a semaphore for that
- return globals.fEventQHead != nullptr;
-}
-
-#ifdef SK_TRACE_EVENTS
- static int gDelayDepth;
-#endif
-
-SkMSec SkEvent::EnqueueTime(SkEvent* evt, SkMSec time) {
- SkEvent_Globals& globals = getGlobals();
- // gEventMutex acquired by caller
-
- SkEvent* curr = globals.fDelayQHead;
- SkEvent* prev = nullptr;
-
- while (curr) {
- if (SkMSec_LT(time, curr->fTime)) {
- break;
- }
- prev = curr;
- curr = curr->fNextEvent;
- }
-
- evt->fTime = time;
- evt->fNextEvent = curr;
- if (prev == nullptr) {
- globals.fDelayQHead = evt;
- } else {
- prev->fNextEvent = evt;
- }
-
- SkMSec delay = globals.fDelayQHead->fTime - GetMSecsSinceStartup();
- if ((int32_t)delay <= 0) {
- delay = 1;
- }
- return delay;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-#include "SkEventSink.h"
-
-bool SkEvent::ProcessEvent() {
- std::unique_ptr<SkEvent> evt(SkEvent::Dequeue());
- bool again = false;
-
- EVENT_LOGN("ProcessEvent", (int32_t)evt);
-
- if (evt) {
- (void)SkEventSink::DoEvent(*evt);
- again = SkEvent::QHasEvents();
- }
- return again;
-}
-
-void SkEvent::ServiceQueueTimer()
-{
- SkEvent_Globals& globals = getGlobals();
-
- globals.fEventMutex.acquire();
-
- bool wasEmpty = false;
- SkMSec now = GetMSecsSinceStartup();
- SkEvent* evt = globals.fDelayQHead;
-
- while (evt)
- {
- if (SkMSec_LT(now, evt->fTime))
- break;
-
-#ifdef SK_TRACE_EVENTS
- --gDelayDepth;
- SkDebugf("dequeue-delay %s (%d)", evt->getType(), gDelayDepth);
- const char* idStr = evt->findString("id");
- if (idStr)
- SkDebugf(" (%s)", idStr);
- SkDebugf("\n");
-#endif
-
- SkEvent* next = evt->fNextEvent;
- if (SkEvent::Enqueue(evt))
- wasEmpty = true;
- evt = next;
- }
- globals.fDelayQHead = evt;
-
- SkMSec time = evt ? evt->fTime - now : 0;
-
- globals.fEventMutex.release();
-
- if (wasEmpty)
- SkEvent::SignalNonEmptyQueue();
-
- SkEvent::SignalQueueTimer(time);
-}
-
-int SkEvent::CountEventsOnQueue() {
- SkEvent_Globals& globals = getGlobals();
- globals.fEventMutex.acquire();
-
- int count = 0;
- const SkEvent* evt = globals.fEventQHead;
- while (evt) {
- count += 1;
- evt = evt->fNextEvent;
- }
- globals.fEventMutex.release();
-
- return count;
-}
-
-SkMSec SkEvent::GetMSecsSinceStartup() {
- static const double kEpoch = SkTime::GetMSecs();
- return static_cast<SkMSec>(SkTime::GetMSecs() - kEpoch);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-void SkEvent::Init() {}
-
-void SkEvent::Term() {
- SkEvent_Globals& globals = getGlobals();
-
- SkEvent* evt = globals.fEventQHead;
- while (evt) {
- SkEvent* next = evt->fNextEvent;
- delete evt;
- evt = next;
- }
-
- evt = globals.fDelayQHead;
- while (evt) {
- SkEvent* next = evt->fNextEvent;
- delete evt;
- evt = next;
- }
-}