blob: bcabd8cbdb0c0a923a99993cf5ad109aae5539c6 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef EMBEDDERS_ANDROID_VM_GLUE_H_
#define EMBEDDERS_ANDROID_VM_GLUE_H_
#include <android_native_app_glue.h>
#include "include/dart_api.h"
#include "embedders/android/graphics.h"
class VMGlue {
public:
explicit VMGlue(Graphics* graphics);
int InitializeVM();
int StartMainIsolate();
int CallSetup();
int CallUpdate();
int OnMotionEvent(const char* function, int64_t when,
float move_x, float move_y);
int OnKeyEvent(const char* function, int64_t when, int32_t flags,
int32_t key_code, int32_t meta_state, int32_t repeat);
void FinishMainIsolate();
private:
int Invoke(const char *function, int argc, Dart_Handle* args,
bool failIfNotDefined = true);
static int ErrorExit(const char* format, ...);
static Dart_Handle CheckError(Dart_Handle);
static bool CreateIsolateAndSetupHelper(const char* script_uri,
const char* main,
void* data,
char** error);
static bool CreateIsolateAndSetup(const char* script_uri,
const char* main,
void* data, char** error);
static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag,
Dart_Handle library,
Dart_Handle urlHandle);
static Dart_Handle LoadSourceFromFile(const char* url);
static void ShutdownIsolate(void* callback_data);
Graphics* graphics_;
Dart_Isolate isolate_;
bool initialized_vm_;
bool initialized_script_;
};
#endif // EMBEDDERS_ANDROID_VM_GLUE_H_