我正在使用一個wxWidgets程序,它與使用空閒事件的wxWiki「製作渲染循環」示例非常相似。我修改了顯示面板以顯示背景圖像,閃爍的文字和動畫。wxWidgets程序增加CPU使用率
void MyApp::onIdle(wxIdleEvent& evt)
{
if(render_loop_on)
{
drawPane->paintNow();
while(Pending())
Dispatch();
evt.RequestMore();
}
}
BasicDrawPane::BasicDrawPane(wxFrame* parent) :
wxPanel(parent)
{
wxBitmap background;
background.LoadFile("background.png", wxBITMAP_TYPE_PNG);
m_pBackground = new wxStaticBitmap(this, -1, background);
m_pBackground->Show();
m_pText = new wxStaticText(this, -1, wxT("blinking"), wxPoint(400, 10));
m_pText->Show();
m_bShow = false;
wxAnimation iconAni;
iconAni.LoadFile("animation.gif");
m_wxIconAnimationCtrl = new wxAnimationCtrl(this, -1, iconAni);
m_wxIconAnimationCtrl->Play();
}
void BasicDrawPane::paintNow()
{
m_bShow = !m_bShow;
m_pText->Show(m_bShow);
}
我加入了調度功能,因爲沒有它,程序啓動後的內存和CPU使用率會呈線性增加,但即使與調度功能,CPU使用率會在幾個小時運行後逐漸攀升。僅當我單獨顯示背景時,CPU使用情況纔會穩定。
我用小狗linux上的wxWidgets 2.8.11做了測試,任何人都可以提醒它嗎?
好像動畫將產生更多的wxIdleEvent外MyApp的:: ONIDLE手柄,使越來越多的閒置事件將被推到隊列中更換
,但我不知道如何解決它。 – Ruhoo2004