src/corelib/kernel/qtimer.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
   337     \sa start()
   337     \sa start()
   338 */
   338 */
   339 
   339 
   340 void QTimer::singleShot(int msec, QObject *receiver, const char *member)
   340 void QTimer::singleShot(int msec, QObject *receiver, const char *member)
   341 {
   341 {
   342     if (receiver && member)
   342     if (receiver && member) {
       
   343         if (msec == 0) {
       
   344             // special code shortpath for 0-timers
       
   345             const char* bracketPosition = strchr(member, '(');
       
   346             if (!bracketPosition || !(member[0] >= '0' && member[0] <= '3')) {
       
   347                 qWarning("QTimer::singleShot: Invalid slot specification");
       
   348                 return;
       
   349             }
       
   350             QByteArray methodName(member+1, bracketPosition - 1 - member); // extract method name
       
   351             QMetaObject::invokeMethod(receiver, methodName.constData(), Qt::QueuedConnection);
       
   352             return;
       
   353         }
   343         (void) new QSingleShotTimer(msec, receiver, member);
   354         (void) new QSingleShotTimer(msec, receiver, member);
       
   355     }
   344 }
   356 }
   345 
   357 
   346 /*!
   358 /*!
   347     \property QTimer::singleShot
   359     \property QTimer::singleShot
   348     \brief whether the timer is a single-shot timer
   360     \brief whether the timer is a single-shot timer