blob: 72db66094fa08c4d29dd405b6a4201f25e433a45 [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_OPENGLUI_COMMON_VM_GLUE_H_
#define EMBEDDERS_OPENGLUI_COMMON_VM_GLUE_H_
#include <stdlib.h>
#include "embedders/openglui/common/events.h"
#include "embedders/openglui/common/isized.h"
#include "include/dart_api.h"
class VMGlue {
public:
explicit VMGlue(ISized* surface,
const char* script_path,
const char* extension_script = NULL,
const char* main_script = NULL);
~VMGlue() {
delete[] main_script_;
delete[] extension_script_;
}
int InitializeVM();
int StartMainIsolate();
int CallSetup(bool force = false);
int CallUpdate();
int CallShutdown();
int OnMotionEvent(const char* funtion, int64_t when,
float move_x, float move_y);
int OnKeyEvent(const char* funtion, 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 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);
ISized* surface_;
Dart_Isolate isolate_;
bool initialized_vm_;
bool initialized_script_;
char* main_script_;
static char* extension_script_;
};
#endif // EMBEDDERS_OPENGLUI_COMMON_VM_GLUE_H_