int SDL_main(int argc, char** argv) {
#else
int main(int argc, char** argv) {
#endif
    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) {
        report_sdl_error("Failed to init SDL.");
        return -1;
    }

    application_init();

    SkOSWindow* window = create_sk_window(nullptr, argc, argv);

    // drain any events that occurred before |window| was assigned.
    while (SkEvent::ProcessEvent());

    SkOSWindow::RunEventLoop();

    delete window;
    application_term();

    SDL_Quit();

    return 0;
}
Beispiel #2
0
int APIENTRY _tWinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPTSTR    lpCmdLine,
	int       nCmdShow)
{
	UNREFERENCED_PARAMETER(hPrevInstance);

	MSG msg;

	// Initialize global strings
	MyRegisterClass(hInstance);

	// Perform application initialization:
	if (!InitInstance (hInstance, nCmdShow, lpCmdLine))
	{
		return FALSE;
	}

	// Main message loop:
	while (GetMessage(&msg, NULL, 0, 0))
	{
		if (true)
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	application_term();

	return (int) msg.wParam;
}
Beispiel #3
0
int main(int argc, char** argv){
    SkOSWindow* window = create_sk_window(NULL, argc, argv);

    // drain any events that occurred before |window| was assigned.
    while (SkEvent::ProcessEvent());

    // Start normal Skia sequence
    application_init();

    window->loop();

    delete window;
    application_term();
    return 0;
}
JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_term(JNIEnv* env,
        jobject thiz)
{
    delete gWindow;
    gWindow = NULL;
    application_term();
    if (gWindowGlue.m_obj) {
        env->DeleteWeakGlobalRef(gWindowGlue.m_obj);
        gWindowGlue.m_obj = NULL;
    }
    if (gActivityGlue.m_obj) {
        env->DeleteWeakGlobalRef(gActivityGlue.m_obj);
        gActivityGlue.m_obj = NULL;
    }
}
Beispiel #5
0
int main(int argc, char** argv){
    signal(SIGALRM, catch_alarm);

    gWindow = create_sk_window(NULL, argc, argv);

    // drain any events that occurred before gWindow was assigned.
    while (SkEvent::ProcessEvent());

    // Start normal Skia sequence
    application_init();

    gWindow->loop();

    delete gWindow;
    application_term();
    return 0;
}
Beispiel #6
0
void android_main(struct android_app* state) {
    struct VisualBenchState visualBenchState;

    // Make sure glue isn't stripped.
    app_dummy();

    state->userData = &visualBenchState;
    state->onAppCmd = handle_cmd;
    visualBenchState.fApp = state;

    // Get command line arguments
    JavaVM* jvm = state->activity->vm;
    JNIEnv *env;
    jvm->AttachCurrentThread(&env, 0);

    jobject me = state->activity->clazz;

    jclass acl = env->GetObjectClass(me); //class pointer of NativeActivity
    jmethodID giid = env->GetMethodID(acl, "getIntent", "()Landroid/content/Intent;");
    jobject intent = env->CallObjectMethod(me, giid); //Got our intent

    jclass icl = env->GetObjectClass(intent); //class pointer of Intent
    jmethodID gseid = env->GetMethodID(icl, "getStringExtra",
                                       "(Ljava/lang/String;)Ljava/lang/String;");

    jstring jsParam1 = (jstring)env->CallObjectMethod(intent, gseid,
                                                      env->NewStringUTF("cmdLineFlags"));
    if (jsParam1) {
        const char* flags = env->GetStringUTFChars(jsParam1, 0);
        SkStrSplit(flags, " ", &visualBenchState.fFlags);
        env->ReleaseStringUTFChars(jsParam1, flags);
    }
    jvm->DetachCurrentThread();

    while (1) {
        // Read all pending events.
        int ident;
        int events;
        struct android_poll_source* source;

        // We loop until all events are read, then continue to draw the next frame of animation.
        while ((ident=ALooper_pollAll(0, nullptr, &events, (void**)&source)) >= 0) {
            // Process this event.
            if (source != nullptr) {
                source->process(state, source);
            }

            // Check if we are exiting.
            if (state->destroyRequested != 0) {
                return;
            }

        }

        if (visualBenchState.fWindow) {
            if (visualBenchState.fWindow->destroyRequested()) {
                visualBenchState.fState = kDestroyRequested_State;
            } else {
                visualBenchState.fWindow->update(nullptr);
            }
        }

        if (kDestroyRequested_State == visualBenchState.fState) {
            delete visualBenchState.fWindow;
            visualBenchState.fWindow = nullptr;
            application_term();
            ANativeActivity_finish(state->activity);
            visualBenchState.fState = kFinished_State;
        }
    }
}