Title: [151268] trunk/Source/WebCore
- Revision
- 151268
- Author
- [email protected]
- Date
- 2013-06-06 06:52:45 -0700 (Thu, 06 Jun 2013)
Log Message
Cannot set a new timer inside of timer callback in RunLoopTimerGtk & RunLoopTimerEFL
https://bugs.webkit.org/show_bug.cgi?id=117224
Patch by Gwang Yoon Hwang <[email protected]> on 2013-06-06
Reviewed by Christophe Dumez.
RunLoopTimer should clear its isActive flag before invoking timer
callback.
* platform/efl/RunLoopEfl.cpp:
(WebCore::RunLoop::TimerBase::timerFired):
* platform/gtk/RunLoopGtk.cpp:
(WebCore::RunLoop::TimerBase::timerFiredCallback):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (151267 => 151268)
--- trunk/Source/WebCore/ChangeLog 2013-06-06 13:39:27 UTC (rev 151267)
+++ trunk/Source/WebCore/ChangeLog 2013-06-06 13:52:45 UTC (rev 151268)
@@ -1,3 +1,18 @@
+2013-06-06 Gwang Yoon Hwang <[email protected]>
+
+ Cannot set a new timer inside of timer callback in RunLoopTimerGtk & RunLoopTimerEFL
+ https://bugs.webkit.org/show_bug.cgi?id=117224
+
+ Reviewed by Christophe Dumez.
+
+ RunLoopTimer should clear its isActive flag before invoking timer
+ callback.
+
+ * platform/efl/RunLoopEfl.cpp:
+ (WebCore::RunLoop::TimerBase::timerFired):
+ * platform/gtk/RunLoopGtk.cpp:
+ (WebCore::RunLoop::TimerBase::timerFiredCallback):
+
2013-06-06 Diego Pino Garcia <[email protected]>
[GTK] Parameters 'inResult' and 'resolver' from function 'webkit_dom_document_evaluate' should be allowed to be NULL
Modified: trunk/Source/WebCore/platform/efl/RunLoopEfl.cpp (151267 => 151268)
--- trunk/Source/WebCore/platform/efl/RunLoopEfl.cpp 2013-06-06 13:39:27 UTC (rev 151267)
+++ trunk/Source/WebCore/platform/efl/RunLoopEfl.cpp 2013-06-06 13:52:45 UTC (rev 151268)
@@ -100,14 +100,12 @@
{
RunLoop::TimerBase* timer = static_cast<RunLoop::TimerBase*>(data);
- timer->fired();
-
- if (!timer->m_isRepeating) {
+ if (!timer->m_isRepeating)
timer->m_timer = 0;
- return ECORE_CALLBACK_CANCEL;
- }
- return ECORE_CALLBACK_RENEW;
+ timer->fired();
+
+ return timer->m_isRepeating ? ECORE_CALLBACK_RENEW : ECORE_CALLBACK_CANCEL;
}
void RunLoop::TimerBase::start(double nextFireInterval, bool repeat)
Modified: trunk/Source/WebCore/platform/gtk/RunLoopGtk.cpp (151267 => 151268)
--- trunk/Source/WebCore/platform/gtk/RunLoopGtk.cpp 2013-06-06 13:39:27 UTC (rev 151267)
+++ trunk/Source/WebCore/platform/gtk/RunLoopGtk.cpp 2013-06-06 13:52:45 UTC (rev 151268)
@@ -136,9 +136,10 @@
GSource* currentTimerSource = timer->m_timerSource.get();
bool isRepeating = timer->isRepeating();
// This can change the timerSource by starting a new timer within the callback.
- timer->fired();
if (!isRepeating && currentTimerSource == timer->m_timerSource.get())
timer->clearTimerSource();
+
+ timer->fired();
return isRepeating;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes