Exemplo n.º 1
0
Arquivo: impl.cpp Projeto: slon/raptor
scheduler_impl_t::wait_result_t scheduler_impl_t::wait_queue(spinlock_t* queue_lock, duration_t* timeout) {
	ev_timer timer_timeout;

	watcher_data_t watcher_data(FIBER_IMPL);
	deferred_unlock_t deferred(queue_lock);

	ev_tstamp start_wait;
	if(timeout) {
		start_wait = ev_now(ev_loop_);
		ev_init((ev_watcher*)&timer_timeout, switch_to_cb);
		ev_timer_set(&timer_timeout, timeout->count(), 0.0);
		ev_timer_start(ev_loop_, &timer_timeout);
		timer_timeout.data = &watcher_data;
	}

	FIBER_IMPL->yield(&deferred);

	unlink_activate(FIBER_IMPL);

	if(timeout) {
		*timeout -= duration_t(ev_now(ev_loop_) - start_wait);
		ev_timer_stop(ev_loop_, &timer_timeout);
	}

	if(timeout && (watcher_data.events & EV_TIMER)) {
		return TIMEDOUT;
	} else {
		return READY;
	}
}
Exemplo n.º 2
0
int tool_main(int argc, char** argv) {
    SkCommandLineFlags::Parse(argc, argv);

    for (int i = 0; i < FLAGS_skps.count(); i++) {
        if (SkCommandLineFlags::ShouldSkip(FLAGS_match, FLAGS_skps[i])) {
            continue;
        }

        SkAutoTDelete<SkStream> stream(SkStream::NewFromFile(FLAGS_skps[i]));
        if (!stream) {
            SkDebugf("Could not read %s.\n", FLAGS_skps[i]);
            return 1;
        }
        sk_sp<SkPicture> src(SkPicture::MakeFromStream(stream));
        if (!src) {
            SkDebugf("Could not read %s as an SkPicture.\n", FLAGS_skps[i]);
            return 1;
        }
        if (FLAGS_defer) {
            SkPictureRecorder recorder;
            SkDeferredCanvas deferred(recorder.beginRecording(src->cullRect()));
            src->playback(&deferred);
            src = recorder.finishRecordingAsPicture();
        }
        const int w = SkScalarCeilToInt(src->cullRect().width());
        const int h = SkScalarCeilToInt(src->cullRect().height());

        SkRecord record;
        SkRecorder canvas(&record, w, h);
        src->playback(&canvas);

        if (FLAGS_optimize) {
            SkRecordOptimize(&record);
        }
        if (FLAGS_optimize2) {
            SkRecordOptimize2(&record);
        }

        dump(FLAGS_skps[i], w, h, record);

        if (FLAGS_write.count() > 0) {
            SkPictureRecorder r;
            SkRecordDraw(record,
                         r.beginRecording(SkRect::MakeIWH(w, h)),
                         nullptr,
                         nullptr,
                         0,
                         nullptr,
                         nullptr);
            sk_sp<SkPicture> dst(r.finishRecordingAsPicture());
            SkFILEWStream ostream(FLAGS_write[0]);
            dst->serialize(&ostream);
        }
    }

    return 0;
}
Exemplo n.º 3
0
void irr::scene::ILightManagerCustom::OnRenderPassPostRender(irr::scene::E_SCENE_NODE_RENDER_PASS renderPass)
{
    if (renderPass == irr::scene::ESNRP_SOLID)
    {
        Device->getVideoDriver()->setRenderTarget(SolidBuffer, true, false);
        deferred();

        Device->getVideoDriver()->setRenderTarget(0, false, false);
        Device->getVideoDriver()->draw2DImage(SolidBuffer, irr::core::position2d<s32> (0,0));
    }
    else if (renderPass == irr::scene::ESNRP_TRANSPARENT)
    {
        TransparentRenderPass = false;
    }
}
Exemplo n.º 4
0
Arquivo: impl.cpp Projeto: slon/raptor
void scheduler_impl_t::switch_to() {
	deferred_activate_t deferred(this, FIBER_IMPL);
	FIBER_IMPL->yield(&deferred);
}