亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qeventdispatcher_unix.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    }    Q_D(QEventDispatcherUNIX);    if (d->timerList.isEmpty())        return false;    for (int i = 0; i < d->timerList.size(); ++i) {        register QTimerInfo *t = d->timerList.at(i);        if (t->obj == object) {            // object found            d->timerList.removeAt(i);            delete t;            // move back one so that we don't skip the new current item            --i;        }    }    return true;}QList<QEventDispatcherUNIX::TimerInfo>QEventDispatcherUNIX::registeredTimers(QObject *object) const{    if (!object) {        qWarning("QEventDispatcherUNIX:registeredTimers: invalid argument");        return QList<TimerInfo>();    }    Q_D(const QEventDispatcherUNIX);    QList<TimerInfo> list;    for (int i = 0; i < d->timerList.size(); ++i) {        register const QTimerInfo * const t = d->timerList.at(i);        if (t->obj == object)            list << TimerInfo(t->id, t->interval.tv_sec * 1000 + t->interval.tv_usec / 1000);    }    return list;}/***************************************************************************** Socket notifier type *****************************************************************************/QSockNotType::QSockNotType(){    FD_ZERO(&select_fds);    FD_ZERO(&enabled_fds);    FD_ZERO(&pending_fds);}QSockNotType::~QSockNotType(){    while (!list.isEmpty())        delete list.takeFirst();}/***************************************************************************** QEventDispatcher implementations for UNIX *****************************************************************************/void QEventDispatcherUNIX::registerSocketNotifier(QSocketNotifier *notifier){    int sockfd;    int type;    if (!notifier        || (sockfd = notifier->socket()) < 0        || unsigned(sockfd) >= FD_SETSIZE        || (type = notifier->type()) < 0        || type > 2) {        qWarning("QSocketNotifier: Internal error");        return;    } else if (notifier->thread() != thread()               || thread() != QThread::currentThread()) {        qWarning("QSocketNotifier: socket notifiers cannot be enabled from another thread");        return;    }    Q_D(QEventDispatcherUNIX);    QList<QSockNot *> &list = d->sn_vec[type].list;    fd_set *fds  = &d->sn_vec[type].enabled_fds;    QSockNot *sn;    sn = new QSockNot;    sn->obj = notifier;    sn->fd = sockfd;    sn->queue = &d->sn_vec[type].pending_fds;    int i;    for (i = 0; i < list.size(); ++i) {        QSockNot *p = list.at(i);        if (p->fd < sockfd)            break;        if (p->fd == sockfd) {            static const char *t[] = { "Read", "Write", "Exception" };            qWarning("QSocketNotifier: Multiple socket notifiers for "                      "same socket %d and type %s", sockfd, t[type]);        }    }    list.insert(i, sn);    FD_SET(sockfd, fds);    d->sn_highest = qMax(d->sn_highest, sockfd);}void QEventDispatcherUNIX::unregisterSocketNotifier(QSocketNotifier *notifier){    int sockfd;    int type;    if (!notifier        || (sockfd = notifier->socket()) < 0        || unsigned(sockfd) >= FD_SETSIZE        || (type = notifier->type()) < 0        || type > 2) {        qWarning("QSocketNotifier: Internal error");        return;    } else if (notifier->thread() != thread()               || thread() != QThread::currentThread()) {        qWarning("QSocketNotifier: socket notifiers cannot be disabled from another thread");        return;    }    Q_D(QEventDispatcherUNIX);    QList<QSockNot *> &list = d->sn_vec[type].list;    fd_set *fds  =  &d->sn_vec[type].enabled_fds;    QSockNot *sn;    int i;    for (i = 0; i < list.size(); ++i) {        sn = list.at(i);        if(sn->obj == notifier && sn->fd == sockfd)            break;    }    if (i == list.size()) // not found        return;    FD_CLR(sockfd, fds);                        // clear fd bit    FD_CLR(sockfd, sn->queue);    d->sn_pending_list.removeAll(sn);                // remove from activation list    list.removeAt(i);                                // remove notifier found above    delete sn;    if (d->sn_highest == sockfd) {                // find highest fd        d->sn_highest = -1;        for (int i=0; i<3; i++) {            if (!d->sn_vec[i].list.isEmpty())                d->sn_highest = qMax(d->sn_highest,  // list is fd-sorted                                     d->sn_vec[i].list.first()->fd);        }    }}void QEventDispatcherUNIX::setSocketNotifierPending(QSocketNotifier *notifier){    int sockfd;    int type;    if (!notifier        || (sockfd = notifier->socket()) < 0        || sockfd > FD_SETSIZE        || (type = notifier->type()) < 0        || type > 2) {        qWarning("QSocketNotifier: Internal error");        return;    }    Q_ASSERT(notifier->thread() == thread() && thread() == QThread::currentThread());    Q_D(QEventDispatcherUNIX);    QList<QSockNot *> &list = d->sn_vec[type].list;    QSockNot *sn = 0;    int i;    for (i = 0; i < list.size(); ++i) {        sn = list.at(i);        if(sn->obj == notifier && sn->fd == sockfd)            break;    }    if (i == list.size()) // not found        return;    // We choose a random activation order to be more fair under high load.    // If a constant order is used and a peer early in the list can    // saturate the IO, it might grab our attention completely.    // Also, if we're using a straight list, the callback routines may    // delete other entries from the list before those other entries are    // processed.    if (! FD_ISSET(sn->fd, sn->queue)) {        d->sn_pending_list.insert((qrand() & 0xff) %                                  (d->sn_pending_list.size()+1), sn);        FD_SET(sn->fd, sn->queue);    }}int QEventDispatcherUNIX::activateTimers(){    Q_ASSERT(thread() == QThread::currentThread());    Q_D(QEventDispatcherUNIX);    if (qt_disable_lowpriority_timers || d->timerList.isEmpty())        return 0; // nothing to do    bool first = true;    timeval currentTime;    int n_act = 0, maxCount = d->timerList.size();    QTimerInfo *begin = 0;    while (maxCount--) {        getTime(currentTime);        if (first) {            d->timerList.updateWatchTime(currentTime);            first = false;        }        if (d->timerList.isEmpty()) break;        QTimerInfo *t = d->timerList.first();        if (currentTime < t->timeout)            break; // no timer has expired        if (!begin) {            begin = t;        } else if (begin == t) {            // avoid sending the same timer multiple times            break;        } else if (t->interval <  begin->interval || t->interval == begin->interval) {            begin = t;        }        // remove from list        d->timerList.removeFirst();        t->timeout += t->interval;        if (t->timeout < currentTime)            t->timeout = currentTime + t->interval;        // reinsert timer        d->timerList.timerInsert(t);        if (t->interval.tv_usec > 0 || t->interval.tv_sec > 0)            n_act++;        if (!t->inTimerEvent) {            // send event, but don't allow it to recurse            t->inTimerEvent = true;            QTimerEvent e(t->id);            QCoreApplication::sendEvent(t->obj, &e);            if (d->timerList.contains(t))                t->inTimerEvent = false;        }        if (!d->timerList.contains(begin)) begin = 0;    }    return n_act;}int QEventDispatcherUNIX::activateSocketNotifiers(){    Q_D(QEventDispatcherUNIX);    if (d->sn_pending_list.isEmpty())        return 0;    // create sets that match the current pending sets (note: we skip    // the first one, because we activate first and check second)    fd_set rset, wset, xset;    FD_ZERO(&rset);    FD_ZERO(&wset);    FD_ZERO(&xset);    for (int i = 1; i < d->sn_pending_list.size(); ++i) {        const QSockNot * const sn = d->sn_pending_list.at(i);        switch (sn->obj->type()) {        case QSocketNotifier::Read:            FD_SET(sn->fd, &rset);            break;        case QSocketNotifier::Write:            FD_SET(sn->fd, &wset);            break;        case QSocketNotifier::Exception:            FD_SET(sn->fd, &xset);            break;        }    }    // activate entries    int n_act = 0;    QEvent event(QEvent::SockAct);    while (!d->sn_pending_list.isEmpty()) {        QSockNot *sn = d->sn_pending_list.takeFirst();        if (FD_ISSET(sn->fd, sn->queue)) {            FD_CLR(sn->fd, sn->queue);            QCoreApplication::sendEvent(sn->obj, &event);            ++n_act;        }    }    return n_act;}bool QEventDispatcherUNIX::processEvents(QEventLoop::ProcessEventsFlags flags){    Q_D(QEventDispatcherUNIX);    d->interrupt = false;    // we are awake, broadcast it    emit awake();    QCoreApplication::sendPostedEvents(0, (flags & QEventLoop::DeferredDeletion) ? -1 : 0);    int nevents = 0;    const bool canWait = (d->threadData->canWait                          && !d->interrupt                          && (flags & QEventLoop::WaitForMoreEvents));    if (canWait)        emit aboutToBlock();    if (!d->interrupt) {        // return the maximum time we can wait for an event.        timeval *tm = 0;        timeval wait_tm = { 0l, 0l };        if (!(flags & QEventLoop::X11ExcludeTimers)) {            if (d->timerList.timerWait(wait_tm))                tm = &wait_tm;            if (!canWait) {                if (!tm)                    tm = &wait_tm;                // no time to wait                tm->tv_sec  = 0l;                tm->tv_usec = 0l;            }        }        nevents = d->doSelect(flags, tm);        // activate timers        if (! (flags & QEventLoop::X11ExcludeTimers)) {            nevents += activateTimers();        }    }    // return true if we handled events, false otherwise    return (nevents > 0);}bool QEventDispatcherUNIX::hasPendingEvents(){    extern uint qGlobalPostedEventsCount(); // from qapplication.cpp    return qGlobalPostedEventsCount();}void QEventDispatcherUNIX::wakeUp(){    Q_D(QEventDispatcherUNIX);    if (d->wakeUps.testAndSetAcquire(0, 1)) {        char c = 0;        ::write( d->thread_pipe[1], &c, 1 );    }}void QEventDispatcherUNIX::interrupt(){    Q_D(QEventDispatcherUNIX);    d->interrupt = true;    wakeUp();}void QEventDispatcherUNIX::flush(){ }void QCoreApplication::watchUnixSignal(int sig, bool watch){    if (sig < NSIG) {        struct sigaction sa;        sigemptyset(&(sa.sa_mask));        sa.sa_flags = 0;        if (watch)            sa.sa_handler = signalHandler;        else            sa.sa_handler = SIG_DFL;        sigaction(sig, &sa, 0);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美三区| 色网综合在线观看| 成人国产一区二区三区精品| 成人国产精品免费| 欧美午夜理伦三级在线观看| 日韩三区在线观看| 日本一区二区三区免费乱视频| 亚洲视频在线观看三级| 三级久久三级久久久| 国内不卡的二区三区中文字幕| 丁香天五香天堂综合| 在线精品视频小说1| 日韩精品一区二| 国产精品久久久久久久久免费桃花 | 正在播放亚洲一区| 精品粉嫩超白一线天av| 亚洲天堂精品在线观看| 亚洲成人中文在线| 国产成人精品一区二区三区四区 | 欧美国产一区二区| 亚洲电影一区二区| 国产精品一区二区在线播放| 91成人免费网站| 久久综合成人精品亚洲另类欧美 | 欧美伊人久久久久久久久影院 | 国产精品一区在线| 欧美日韩一区不卡| 欧美国产成人精品| 青青草成人在线观看| 91一区二区在线观看| 精品99久久久久久| 午夜视黄欧洲亚洲| av一二三不卡影片| www精品美女久久久tv| 亚洲一区在线观看视频| 国产99精品视频| 日韩欧美国产精品一区| 亚洲精品第一国产综合野| 国产麻豆欧美日韩一区| 欧美日韩精品一区二区三区| 国产精品你懂的在线欣赏| 麻豆国产欧美日韩综合精品二区| 一本一道久久a久久精品综合蜜臀| 久久这里只有精品视频网| 日韩一区欧美二区| 日本黄色一区二区| 国产精品乱码久久久久久| 免费欧美在线视频| 欧美最新大片在线看| 成人欧美一区二区三区黑人麻豆| 精品一二线国产| 91精品在线一区二区| 亚洲国产综合色| 91亚洲精品乱码久久久久久蜜桃| 久久久久久久电影| 高清不卡一区二区| 欧美电视剧在线观看完整版| 亚洲成人午夜电影| 91福利在线导航| 综合久久国产九一剧情麻豆| 国产91精品久久久久久久网曝门 | 韩国精品在线观看| 日韩视频123| 美女网站视频久久| 制服丝袜成人动漫| 日韩在线一区二区| 欧美一级在线观看| 日本aⅴ免费视频一区二区三区| 欧洲av在线精品| 一区二区三区四区不卡视频 | 一区二区三区四区在线| 91在线高清观看| 中文字幕中文字幕一区二区| 顶级嫩模精品视频在线看| 国产人久久人人人人爽| 国产成人无遮挡在线视频| 久久久亚洲精品石原莉奈| 亚洲一二三专区| 欧美羞羞免费网站| 亚洲国产aⅴ成人精品无吗| 欧美亚洲丝袜传媒另类| 亚洲国产日韩a在线播放性色| 在线视频你懂得一区二区三区| 亚洲精选一二三| 欧洲在线/亚洲| 午夜伦欧美伦电影理论片| 欧美日韩高清不卡| 日本成人中文字幕在线视频 | 久久爱另类一区二区小说| 精品日韩欧美在线| 国产福利一区在线| 成人性视频免费网站| 在线91免费看| 久久99热这里只有精品| 久久久久久久一区| 成人国产在线观看| 亚洲国产欧美日韩另类综合 | 日韩成人免费电影| 精品久久99ma| 成人午夜免费视频| 一区二区三区免费观看| 3751色影院一区二区三区| 精品一区二区三区视频| 中文字幕成人av| 日韩av电影天堂| 久久久99免费| 一级特黄大欧美久久久| 国产一区二区伦理| 1024精品合集| 欧美另类z0zxhd电影| 色久优优欧美色久优优| 久久久精品黄色| 91免费视频网| 日韩**一区毛片| 色婷婷一区二区| 日韩不卡免费视频| 国产精品成人免费| 6080国产精品一区二区| 国产福利精品导航| 亚洲综合成人在线视频| 日韩免费观看高清完整版| 成人黄色免费短视频| 亚洲成a人片在线观看中文| 2020国产精品久久精品美国| 99久久久久久99| 喷白浆一区二区| 亚洲四区在线观看| 日韩精品一区二区三区中文不卡| 成人性生交大片免费看视频在线 | 在线观看视频欧美| 激情五月播播久久久精品| 亚洲欧美偷拍卡通变态| 欧美一级精品在线| 色综合欧美在线| 国内外成人在线视频| 亚洲麻豆国产自偷在线| 欧美精品一区男女天堂| 欧美亚洲动漫精品| 国产99精品国产| 另类小说欧美激情| 亚洲免费成人av| 久久精品一区二区三区不卡| 欧美日韩高清在线播放| www.日韩精品| 久久成人免费网站| 亚洲高清视频在线| 男人的天堂久久精品| 91精品国产免费久久综合| 91免费在线看| 粉嫩一区二区三区性色av| 亚洲成a人v欧美综合天堂 | 91精品1区2区| 国产成人在线观看免费网站| 日韩高清在线一区| 一区二区三区欧美亚洲| 国产欧美精品区一区二区三区 | 久久精品免费观看| 亚洲亚洲人成综合网络| 国产精品国产馆在线真实露脸 | 国产91在线|亚洲| 麻豆国产欧美一区二区三区| 亚洲成在线观看| 亚洲欧美色综合| 中文字幕成人av| 国产日韩影视精品| 欧美精品一区二区三区蜜桃| 欧美丰满美乳xxx高潮www| 在线观看91视频| 欧美主播一区二区三区美女| av在线不卡观看免费观看| 国产精品99久久久久久宅男| 麻豆免费精品视频| 水蜜桃久久夜色精品一区的特点| 亚洲精品免费播放| 亚洲少妇30p| 国产精品久久久久久妇女6080 | 成人黄色小视频| 成人免费毛片a| 国产成人av网站| 国产精品资源网站| 国产一区二区久久| 国产做a爰片久久毛片| 麻豆精品在线看| 久久aⅴ国产欧美74aaa| 日本欧美加勒比视频| 青青草精品视频| 激情综合网激情| 国产综合一区二区| 国产麻豆视频精品| 国产91丝袜在线观看| 成人性生交大片免费看在线播放| 国产99久久久国产精品免费看 | 一区二区三区四区精品在线视频| 亚洲欧美日韩一区| 一区二区三区精品在线观看| 亚洲综合自拍偷拍| 视频一区二区三区入口| 久久综合综合久久综合| 国产精品一二三四| 国产不卡视频在线播放|