浏览代码

Fixed unreasonably high CPU utilization in cases when new connection has

been accepted but polling was not activated yet.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2182 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v0.0.90
Constantin Kaplinsky 17 年前
父节点
当前提交
813dbb430d
共有 3 个文件被更改,包括 12 次插入2 次删除
  1. 5
    0
      unix/x0vncserver/PollingScheduler.cxx
  2. 3
    0
      unix/x0vncserver/PollingScheduler.h
  3. 4
    2
      unix/x0vncserver/x0vncserver.cxx

+ 5
- 0
unix/x0vncserver/PollingScheduler.cxx 查看文件

@@ -55,6 +55,11 @@ void PollingScheduler::reset()
m_initialState = true;
}

bool PollingScheduler::isRunning()
{
return !m_initialState;
}

void PollingScheduler::newPass()
{
TimeMillis timeNow;

+ 3
- 0
unix/x0vncserver/PollingScheduler.h 查看文件

@@ -41,6 +41,9 @@ public:
// Reset the object into the initial state (no polling performed).
void reset();

// Check if the object is active (not in the initial state).
bool isRunning();

// Tell the scheduler that new polling pass is just being started.
void newPass();


+ 4
- 2
unix/x0vncserver/x0vncserver.cxx 查看文件

@@ -513,7 +513,10 @@ int main(int argc, char** argv)
}
}

if (clients_connected) {
if (!clients_connected)
sched.reset();

if (sched.isRunning()) {
int wait_ms = sched.millisRemaining();
if (wait_ms > 500) {
wait_ms = 500;
@@ -523,7 +526,6 @@ int main(int argc, char** argv)
// fprintf(stderr, "[%d]\t", wait_ms);
#endif
} else {
sched.reset();
tv.tv_usec = 100000;
}
tv.tv_sec = 0;

正在加载...
取消
保存