DisplayPtr DisplayCache::createDisplay(const NativeDisplay& nativeDisplay) { NativeDisplayPtr nativeDisplayObj; VADisplay vaDisplay = NULL; DisplayPtr vaapiDisplay; YamiMediaCodec::AutoLock locker(m_lock); m_cache.remove_if(expired); //lockup first list<weak_ptr<VaapiDisplay> >::iterator it; for (it = m_cache.begin(); it != m_cache.end(); ++it) { vaapiDisplay = (*it).lock(); if (vaapiDisplay->isCompatible(nativeDisplay)) { return vaapiDisplay; } } vaapiDisplay.reset(); //crate new one DEBUG("nativeDisplay: (type : %d), (handle : 0x%x)", nativeDisplay.type, nativeDisplay.handle); switch (nativeDisplay.type) { case NATIVE_DISPLAY_AUTO: #if __ENABLE_X11__ case NATIVE_DISPLAY_X11: nativeDisplayObj.reset (new NativeDisplayX11()); if (nativeDisplayObj && nativeDisplayObj->initialize(nativeDisplay)) vaDisplay = vaGetDisplay((Display*)(nativeDisplayObj->nativeHandle())); if (vaDisplay) INFO("use vaapi x11 backend"); if(vaDisplay || nativeDisplay.type == NATIVE_DISPLAY_X11) break; INFO("try to init va with x11 display (%p) but failed", (Display*)(nativeDisplayObj->nativeHandle())); // NATIVE_DISPLAY_AUTO continue, no break #endif case NATIVE_DISPLAY_DRM: nativeDisplayObj.reset (new NativeDisplayDrm()); if (nativeDisplayObj && nativeDisplayObj->initialize(nativeDisplay)) vaDisplay = vaGetDisplayDRM(nativeDisplayObj->nativeHandle()); INFO("use vaapi drm backend"); break; default: break; } if (vaDisplay == NULL) { ERROR("vaGetDisplay failed."); return vaapiDisplay; } if (vaInit(vaDisplay)) vaapiDisplay.reset(new VaapiDisplay(nativeDisplayObj, vaDisplay)); if (vaapiDisplay) { weak_ptr<VaapiDisplay> weak(vaapiDisplay); m_cache.push_back(weak); } return vaapiDisplay; }
void TimerFunction(int value) { snowtick++; camera.Update(); pyramid[0].Update(); pyramid[1].Update(); if (snowtick % 2 == 0) { snow.push_front(Snow()); } for (auto &p : snow) { p.Update(); } snow.remove_if([](auto& data) -> bool { return (data.GetPt().y <= 0); }); (++lightangle) %= 360; glutPostRedisplay(); // ȸé Àç Ãâ·Â glutTimerFunc(1, TimerFunction, 1); // ŸÀ̸ÓÇÔ¼ö Àç ¼³Á¤
void VisualDictionaryApp::update() { if( mDictionary->isCompleteWord( mCurrentNode.getWord() ) ){ mCenterState.update( mCurrentNode ); } // erase any nodes which have been marked as ready to be deleted mDyingNodes.remove_if( bind( &WordNode::shouldBeDeleted, std::placeholders::_1 ) ); }
virtual void update(unsigned long long time) { transform.translate(-newX, -newY, -newZ); x[VEL] += x[ACC]; y[VEL] += y[ACC]; z[VEL] += z[ACC]; x[POS] += x[VEL]; y[POS] += y[VEL]; z[POS] += z[VEL]; if(z[POS] < 0) z[POS] = 0; newX = x[POS]; newY = y[POS]; newZ = z[POS]; transform.translate(newX, newY, newZ); for(i = children.begin(); i != children.end(); i++) (*i)->update(time); children.remove_if(is_dead); }
void Person::clearFriends() { following.remove_if([](SP<int> &p){ return *p == 0; }); }