[Webkit-unassigned] [Bug 103006] [EFL][WK2] Missing the routine to check the validation for workqueue
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Nov 23 03:43:16 PST 2012
https://bugs.webkit.org/show_bug.cgi?id=103006
--- Comment #28 from Christophe Dumez <christophe.dumez at intel.com> 2012-11-23 03:45:18 PST ---
(From update of attachment 175761)
View in context: https://bugs.webkit.org/attachment.cgi?id=175761&action=review
>>>>> Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:85
>>>>> + for (size_t i = 0; i < workItemQueue.size(); ++i) {
>>>>
>>>> Please cache workItemQueue.size() before the loop.
>>>
>>> Could you explain why it is required?
>>
>> This is WebKit coding style and this makes sure that the queue size is not retrieved (possibly computed) for every iteration of the loop.
>
> Is it WebKit coding style? There are so many uses like the style in WebKit.
>From http://www.webkit.org/coding/coding-style.html:
size_t frameViewsCount = frameViews.size();
for (size_t i = i; i < frameViewsCount; ++i)
frameViews[i]->updateLayoutAndStyleIfNeededRecursive();
>>>>> Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:-179
>>>>> - workQueue->performTimerWork();
>>>>
>>>> Why is this removed?
>>>
>>> This function need not be called when m_isValid is false.
>>> So, I inserted this function into performWork().
>>
>> I see now. I did not see that you moved it. However, moving it has side effects.
>> With your change, performTimerWork() will not be called if m_workItemQueue is empty. Please make sure this is really what we want.
>
> Thanks for your comment. But I cannot assume the issue.
> WorkQueue::platformInvalidate() is called when trying to delete WorkQueue. At that time, the work for the items in queue is not required any more.
> Even WorkQueue::platformInvalidate() in WorkQueueMac.cpp deletes m_dispatchQueue which has the dispatched items.
Ok, I try to explain again. Imagine this case:
- platformInvalidate() has NOT been called
- m_workItemQueue is empty but m_timerWorkItems is not
Because you moved performTimerWork() to the end of performWork(), performTimerWork() will never get called (because m_workItemQueue.isEmpty() will be true and performWork() will return early. Therefore, in this scenario, the items in m_workItemQueue will never get processed. This is why I was stating that your change has side effects for cases other than m_isValid is false.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list