[Libreoffice-commits] Adapt SwSrcEditWindow's SyntaxTimerHdl to being used in an Idle now
Tobias Madl
tobias.madl.dev at gmail.com
Wed May 6 01:40:34 PDT 2015
Patch in Gerrit: 5a142827fb945408c51725b31ebc1ded13a2d9c5
On Wed, May 6, 2015 at 10:03 AM, Tobias Madl <tobias.madl.dev at gmail.com>
wrote:
> So yeah SetTimeout should be deletet, but it should be replaced with
> SetPriority (and of course set with an appropriate Priority), because
> otherwise it gets the default priority: HIGH.
>
> The taks should be stopped if there is absolutely no more work to do. If
> stop is called it gets completely removed of the tasklist. So if you think
> that it has no more work todo you can stop it by yourself.
>
> But i think i get your point, because i see that i missed to ask if the
> task is active (i only check if it should be delete). I wil change this and
> then you could set the task as inactive if you think that for now it has no
> more work to do and if it comes to the position:
>
>
> if (... !pIdle->IsActive()) pIdle->Start();
>
> it should be reactivatet.
>
> On Tue, May 5, 2015 at 11:46 AM, Stephan Bergmann <sbergman at redhat.com>
> wrote:
>
>> I assume deleting the SetTimeout calls without replacement is fine, as
>> the idle handler will automatically keep being called again?
>>
>> But then, is it OK that it only ever gets Stop()'ed in
>> SwSrcEditWindow::dispose, or should it also stop itself when there's no
>> more work to do?
>>
>> And is it necessary to do that
>>
>> if (... !pIdle->IsActive()) pIdle->Start();
>>
>> thing from within the handler?
>>
>> On 05/05/2015 10:22 AM, Stephan Bergmann wrote:
>>
>>> commit c0e209bf5f418f1564d16e234251783a0857a9d4
>>> Author: Stephan Bergmann <sbergman at redhat.com>
>>> Date: Tue May 5 10:16:43 2015 +0200
>>>
>>> Adapt SwSrcEditWindow's SyntaxTimerHdl to being used in an Idle now
>>>
>>> ...not a Timer, since d843f3de731667a298a83fc66637c7f983f3b24d
>>> "changed timers
>>> to idle"
>>>
>>> Change-Id: If8c6a52d6fb7b1e392e8f31bc8f0db22b2f049e1
>>>
>>> diff --git a/sw/source/uibase/docvw/srcedtw.cxx
>>> b/sw/source/uibase/docvw/srcedtw.cxx
>>> index cd66ace..02e1e66 100644
>>> --- a/sw/source/uibase/docvw/srcedtw.cxx
>>> +++ b/sw/source/uibase/docvw/srcedtw.cxx
>>> @@ -56,7 +56,6 @@ struct SwTextPortion
>>>
>>> #define MAX_SYNTAX_HIGHLIGHT 20
>>> #define MAX_HIGHLIGHTTIME 200
>>> -#define SYNTAX_HIGHLIGHT_TIMEOUT 200
>>>
>>> typedef std::deque<SwTextPortion> SwTextPortions;
>>>
>>> @@ -579,7 +578,7 @@ IMPL_LINK(SwSrcEditWindow, ScrollHdl, ScrollBar*,
>>> pScroll)
>>> return 0;
>>> }
>>>
>>> -IMPL_LINK( SwSrcEditWindow, SyntaxTimerHdl, Timer *, pTimer )
>>> +IMPL_LINK( SwSrcEditWindow, SyntaxTimerHdl, Idle *, pIdle )
>>> {
>>> tools::Time aSyntaxCheckStart( tools::Time::SYSTEM );
>>> SAL_WARN_IF(pTextView == 0, "sw", "No View yet, but syntax
>>> highlighting?!");
>>> @@ -605,7 +604,6 @@ IMPL_LINK( SwSrcEditWindow, SyntaxTimerHdl, Timer *,
>>> pTimer )
>>> break;
>>> if((tools::Time( tools::Time::SYSTEM ).GetTime() -
>>> aSyntaxCheckStart.GetTime()) > MAX_HIGHLIGHTTIME )
>>> {
>>> - pTimer->SetTimeout( 2 * SYNTAX_HIGHLIGHT_TIMEOUT );
>>> break;
>>> }
>>> }
>>> @@ -620,13 +618,12 @@ IMPL_LINK( SwSrcEditWindow, SyntaxTimerHdl, Timer
>>> *, pTimer )
>>> nCount ++;
>>> if(tools::Time( tools::Time::SYSTEM ).GetTime() -
>>> aSyntaxCheckStart.GetTime() > MAX_HIGHLIGHTTIME)
>>> {
>>> - pTimer->SetTimeout( 2 * SYNTAX_HIGHLIGHT_TIMEOUT );
>>> break;
>>> }
>>> }
>>>
>>> - if(!aSyntaxLineTable.empty() && !pTimer->IsActive())
>>> - pTimer->Start();
>>> + if(!aSyntaxLineTable.empty() && !pIdle->IsActive())
>>> + pIdle->Start();
>>> // SyntaxTimerHdl is called when text changed
>>> // => good opportunity to determine text width!
>>> long nPrevTextWidth = nCurTextWidth;
>>> diff --git a/sw/source/uibase/inc/srcedtw.hxx
>>> b/sw/source/uibase/inc/srcedtw.hxx
>>> index 823e3cd..55e53f4 100644
>>> --- a/sw/source/uibase/inc/srcedtw.hxx
>>> +++ b/sw/source/uibase/inc/srcedtw.hxx
>>> @@ -95,7 +95,7 @@ private:
>>> using OutputDevice::SetFont;
>>> void SetFont();
>>>
>>> - DECL_LINK( SyntaxTimerHdl, Timer * );
>>> + DECL_LINK( SyntaxTimerHdl, Idle * );
>>> DECL_LINK( TimeoutHdl, Timer * );
>>>
>>> using Window::Notify;
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150506/a3454b01/attachment.html>
More information about the LibreOffice
mailing list