Example #1
0
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;
}
Example #2
0
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 ) );
}
Example #4
0
	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);
	}
Example #5
0
File: main.cpp Project: CCJY/coliru
void Person::clearFriends()
{
    following.remove_if([](SP<int> &p){ return *p == 0; });
}