Overview
Comment: | Allow calling -[OFTimer fire] explicitly |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
7ab64323efbaa7ac14f0464668761bef |
User & Date: | js on 2023-08-06 10:24:27 |
Other Links: | manifest | tags |
References
2023-08-06
| ||
10:25 | • Fixed ticket [b38b816f17]: OFTimer Allow calling -fire plus 4 other changes artifact: a5c59b7a6b user: js | |
Context
2023-08-07
| ||
18:20 | Make OFData a class cluster check-in: 91fa20d993 user: js tags: trunk | |
2023-08-06
| ||
10:24 | Allow calling -[OFTimer fire] explicitly check-in: 7ab64323ef user: js tags: trunk | |
2023-08-05
| ||
10:12 | Make platform-specific methods show up in Doxygen check-in: de6dbcf928 user: js tags: trunk | |
Changes
Modified src/OFRunLoop.m from [e289a6e931] to [74044bacbe].
︙ | ︙ | |||
1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 | #ifdef OF_HAVE_THREADS } @finally { [state->_timersQueueMutex unlock]; } #endif if (timer.valid) { [timer fire]; return; } } #ifdef OF_HAVE_THREADS [state->_timersQueueMutex lock]; | > | 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 | #ifdef OF_HAVE_THREADS } @finally { [state->_timersQueueMutex unlock]; } #endif if (timer.valid) { [timer of_reschedule]; [timer fire]; return; } } #ifdef OF_HAVE_THREADS [state->_timersQueueMutex lock]; |
︙ | ︙ |
Modified src/OFTimer+Private.h from [0f4b8327b6] to [387c4c02eb].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 | OF_ASSUME_NONNULL_BEGIN OF_DIRECT_MEMBERS @interface OFTimer () - (void)of_setInRunLoop: (nullable OFRunLoop *)runLoop mode: (nullable OFRunLoopMode)mode; @end OF_ASSUME_NONNULL_END | > | 17 18 19 20 21 22 23 24 25 26 27 | OF_ASSUME_NONNULL_BEGIN OF_DIRECT_MEMBERS @interface OFTimer () - (void)of_setInRunLoop: (nullable OFRunLoop *)runLoop mode: (nullable OFRunLoopMode)mode; - (void)of_reschedule; @end OF_ASSUME_NONNULL_END |
Modified src/OFTimer.h from [e91495b8af] to [12e510d1ae].
︙ | ︙ | |||
458 459 460 461 462 463 464 | * * @param timer The timer to compare the string to * @return The result of the comparison */ - (OFComparisonResult)compare: (OFTimer *)timer; /** | | < > > | 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 | * * @param timer The timer to compare the string to * @return The result of the comparison */ - (OFComparisonResult)compare: (OFTimer *)timer; /** * @brief Fires the timer without changing its regular schedule. * * A non-repeating timer will be invalidated after firing. */ - (void)fire; /** * @brief Invalidates the timer, preventing it from firing. */ - (void)invalidate; |
︙ | ︙ |
Modified src/OFTimer.m from [f074999bf7] to [1f910610bc].
︙ | ︙ | |||
519 520 521 522 523 524 525 526 | _inRunLoop = [runLoop retain]; [oldInRunLoop release]; _inRunLoopMode = [mode copy]; [oldInRunLoopMode release]; } | | | | | < < < | > < < | < < | | | | | | > | | | | > | > > > | > > | | > | | | | | | | | | | | | > > > < < | 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 | _inRunLoop = [runLoop retain]; [oldInRunLoop release]; _inRunLoopMode = [mode copy]; [oldInRunLoopMode release]; } - (void)of_reschedule { long long missedIntervals; OFTimeInterval newFireDate; OFRunLoop *runLoop; if (!_repeats || !_valid) return; missedIntervals = -_fireDate.timeIntervalSinceNow / _interval; /* In case the clock was changed backwards */ if (missedIntervals < 0) missedIntervals = 0; newFireDate = _fireDate.timeIntervalSince1970 + (missedIntervals + 1) * _interval; [_fireDate release]; _fireDate = nil; _fireDate = [[OFDate alloc] initWithTimeIntervalSince1970: newFireDate]; runLoop = [OFRunLoop currentRunLoop]; [runLoop addTimer: self forMode: runLoop.currentMode]; } - (void)fire { OFEnsure(_arguments <= 4); if (!_valid) return; #ifdef OF_HAVE_BLOCKS if (_block != NULL) _block(self); else { #endif switch (_arguments) { case 0: [_target performSelector: _selector]; break; case 1: [_target performSelector: _selector withObject: _object1]; break; case 2: [_target performSelector: _selector withObject: _object1 withObject: _object2]; break; case 3: [_target performSelector: _selector withObject: _object1 withObject: _object2 withObject: _object3]; break; case 4: [_target performSelector: _selector withObject: _object1 withObject: _object2 withObject: _object3 withObject: _object4]; break; } #ifdef OF_HAVE_BLOCKS } #endif if (!_repeats) [self invalidate]; #ifdef OF_HAVE_THREADS [_condition lock]; @try { _done = true; [_condition signal]; } @finally { [_condition unlock]; } #endif } - (OFDate *)fireDate { return _fireDate; } |
︙ | ︙ | |||
631 632 633 634 635 636 637 638 639 640 641 642 643 644 | } } - (void)invalidate { _valid = false; [_target release]; [_object1 release]; [_object2 release]; [_object3 release]; [_object4 release]; _target = nil; | > > > | 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 | } } - (void)invalidate { _valid = false; #ifdef OF_HAVE_BLOCKS [_block release]; #endif [_target release]; [_object1 release]; [_object2 release]; [_object3 release]; [_object4 release]; _target = nil; |
︙ | ︙ |