-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/126078/#review88418
-----------------------------------------------------------


Here's a debugging trace after hitting a breakpoint set on the qFatal() 
statement I put into `MacPoller::stopCatchingIdleEvents` . One can see 
`KIdleTime::stopCatchingResumeEvent` being called in frame 1, but I cannot 
identify the calling frame. It doesn't appear to be 
`KIdleTimePrivate::_k_resumingFromIdle()` (a breakpoint in there isn't hit).


```C++
Process 88123 launched: 
'/Applications/MacPorts/KF5/examples/kidletime_example.app/Contents/MacOS/kidletime_example'
 (x86_64)
starting the idletime poll QTimer with interval 0 and m_minTimeout -1 ; start 
of catch
Your idle time is 595
Welcome!! Move your mouse or do something to start...
Great! Now stay idle for 5 seconds to get a nice message. From 10seconds on, 
you can move your mouse to get back here.
If you will stay idle for too long, I will simulate your activityafter 25 
seconds, and make everything start back
Appended timeout 5000 ; min.== -1
Appended timeout 10000 ; min.== -1
Appended timeout 25000 ; min.== -1
stopping the idletime poll QTimer; end of catch, idle= 2
Process 88123 stopped
* thread #1: tid = 0x37451f, 0x0000000104fb4359 
KF5IdleTimeOsxPlugin.so`MacPoller::stopCatchingIdleEvents(this=<unavailable>) + 
297 at macpoller.cpp:372, queue = 'com.apple.main-thread', stop reason = 
breakpoint 1.1
    frame #0: 0x0000000104fb4359 
KF5IdleTimeOsxPlugin.so`MacPoller::stopCatchingIdleEvents(this=<unavailable>) + 
297 at macpoller.cpp:372
   369      if (m_idleTimer) {
   370          qDebug() << "stopping the idletime poll QTimer; end of catch, 
idle=" << poll(false);
   371  // stopCatchingIdleEvents is called after each resumingFromIdle 
signal??!
-> 372          qFatal(__FUNCTION__);
   373          m_idleTimer->stop();
   374      }
   375  #endif
(lldb) bt
* thread #1: tid = 0x37451f, 0x0000000104fb4359 
KF5IdleTimeOsxPlugin.so`MacPoller::stopCatchingIdleEvents(this=<unavailable>) + 
297 at macpoller.cpp:372, queue = 'com.apple.main-thread', stop reason = 
breakpoint 1.1
  * frame #0: 0x0000000104fb4359 
KF5IdleTimeOsxPlugin.so`MacPoller::stopCatchingIdleEvents(this=<unavailable>) + 
297 at macpoller.cpp:372
    frame #1: 0x000000010000b2c1 
libKF5IdleTime.5.dylib`KIdleTime::qt_static_metacall(QObject*, 
QMetaObject::Call, int, void**) [inlined] KIdleTime::stopCatchingResumeEvent() 
+ 43 at kidletime.cpp:113
    frame #2: 0x000000010000b296 
libKF5IdleTime.5.dylib`KIdleTime::qt_static_metacall(_o=<unavailable>, 
_c=<unavailable>, _id=<unavailable>, _a=<unavailable>) + 582 at 
moc_kidletime.cpp:113
    frame #3: 0x0000000101141252 
QtCore`QMetaObject::activate(sender=0x00000001041161f0, 
signalOffset=<unavailable>, local_signal_index=<unavailable>, 
argv=<unavailable>) + 2978 at qobject.cpp:3713
    frame #4: 0x0000000101141252 
QtCore`QMetaObject::activate(sender=0x00000001041071c0, 
signalOffset=<unavailable>, local_signal_index=<unavailable>, 
argv=<unavailable>) + 2978 at qobject.cpp:3713
    frame #5: 0x0000000101139740 QtCore`QObject::event(this=0x00000001041071c0, 
e=<unavailable>) + 48 at qobject.cpp:1220
    frame #6: 0x000000010004854b 
QtWidgets`QApplicationPrivate::notify_helper(this=<unavailable>, 
receiver=0x00000001041071c0, e=0x00007fff5fbfd4e0) + 251 at 
qapplication.cpp:3716
    frame #7: 0x000000010004b904 
QtWidgets`QApplication::notify(this=<unavailable>, receiver=<unavailable>, 
e=<unavailable>) + 8212 at qapplication.cpp:3681
    frame #8: 0x0000000101110703 
QtCore`QCoreApplication::notifyInternal(this=<unavailable>, 
receiver=<unavailable>, event=<unavailable>) + 115 at qcoreapplication.cpp:970
    frame #9: 0x0000000101163d16 
QtCore`QTimerInfoList::activateTimers(this=0x0000000104059b10) + 1270 at 
qcoreapplication.h:224
    frame #10: 0x0000000104ca5502 
libqcocoa.dylib`QCocoaEventDispatcherPrivate::activateTimersSourceCallback(info=0x0000000104059a90)
 + 18 at qcocoaeventdispatcher.mm:121
    frame #11: 0x00007fff90e4e5b1 
CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #12: 0x00007fff90e3fc62 CoreFoundation`__CFRunLoopDoSources0 + 242
    frame #13: 0x00007fff90e3f3ef CoreFoundation`__CFRunLoopRun + 831
    frame #14: 0x00007fff90e3ee75 CoreFoundation`CFRunLoopRunSpecific + 309
    frame #15: 0x00007fff93440a0d HIToolbox`RunCurrentEventLoopInMode + 226
    frame #16: 0x00007fff934407b7 HIToolbox`ReceiveNextEventCommon + 479
    frame #17: 0x00007fff934405bc 
HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 65
    frame #18: 0x00007fff8ac9c24e AppKit`_DPSNextEvent + 1434
    frame #19: 0x00007fff8ac9b89b AppKit`-[NSApplication 
nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
    frame #20: 0x00007fff8ac8f99c AppKit`-[NSApplication run] + 553
    frame #21: 0x0000000104ca611d 
libqcocoa.dylib`QCocoaEventDispatcher::processEvents(this=0x0000000104056170, 
flags=<unavailable>) + 2189 at qcocoaeventdispatcher.mm:418
    frame #22: 0x000000010110de2d 
QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) [inlined] 
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 381 at 
qeventloop.cpp:128
    frame #23: 0x000000010110de14 
QtCore`QEventLoop::exec(this=0x00007fff5fbfee70, flags=<unavailable>) + 356 at 
qeventloop.cpp:204
    frame #24: 0x0000000101110ca5 QtCore`QCoreApplication::exec() + 325 at 
qcoreapplication.cpp:1234
    frame #25: 0x00000001000025ec kidletime_example`main(argc=1, 
argv=<unavailable>) + 60 at main.cpp:29
    frame #26: 0x00007fff8d7ef5fd libdyld.dylib`start + 1
```

- René J.V. Bertin


On Nov. 15, 2015, 11:58 p.m., René J.V. Bertin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/126078/
> -----------------------------------------------------------
> 
> (Updated Nov. 15, 2015, 11:58 p.m.)
> 
> 
> Review request for KDE Software on Mac OS X and KDE Frameworks.
> 
> 
> Repository: kidletime
> 
> 
> Description
> -------
> 
> I noticed that the KIdleTime example doesn't work properly on OS X, and that 
> the plugin for OS X still uses the deprecated Carbon-based algorithm that I 
> already patched for KDE4.
> 
> This patch is a work-in-progress (hence the qDebugs) update to use IOKit, 
> IORegistry and CoreServices to do idle-time calculation as it should be done, 
> and allow simulated user activity through a "less deprecated" function.
> 
> 
> Diffs
> -----
> 
>   src/plugins/osx/macpoller.cpp ad9c10f 
>   src/plugins/osx/CMakeLists.txt e1b50b8 
>   src/plugins/osx/macpoller.h ef51ea5 
> 
> Diff: https://git.reviewboard.kde.org/r/126078/diff/
> 
> 
> Testing
> -------
> 
> On OS X 10.9 with Qt 5.5.1 and frameworks 5.16.0 .
> 
> The example now works: when I set a QTimer with interval==0, the expected 
> wait for user input (`resumingFromIdle` signal) works. However, I am getting 
> a `stopCatchingIdleEvents` signal which means the application waits forever, 
> without ever getting to compare idle time to the list of timeouts.
> I haven't been able to figure out where that signal comes from, nor why this 
> doesn't happen on Linux.
> 
> Surely I'm missing something, but what?
> 
> 
> Thanks,
> 
> René J.V. Bertin
> 
>

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to