| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include <math.h> | 5 #include <math.h> |
| 6 #include <stdarg.h> | 6 #include <stdarg.h> |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 #include <stdlib.h> | 8 #include <stdlib.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 #include <sys/stat.h> | 10 #include <sys/stat.h> |
| 11 #include <unistd.h> | 11 #include <unistd.h> |
| 12 | 12 |
| 13 #include "embedders/openglui/common/extension.h" | 13 #include "embedders/openglui/common/extension.h" |
| 14 #include "embedders/openglui/common/log.h" | 14 #include "embedders/openglui/common/log.h" |
| 15 #include "embedders/openglui/common/vm_glue.h" | 15 #include "embedders/openglui/common/vm_glue.h" |
| 16 #include "include/dart_api.h" | 16 #include "include/dart_api.h" |
| 17 | 17 |
| 18 char* VMGlue::extension_script_ = NULL; | 18 char* VMGlue::extension_script_ = NULL; |
| 19 bool VMGlue::initialized_vm_ = false; | 19 bool VMGlue::initialized_vm_ = false; |
| 20 | 20 |
| 21 // snapshot_buffer points to a snapshot if we link in a snapshot otherwise | 21 // snapshot_buffer points to a snapshot if we link in a snapshot otherwise |
| 22 // it is initialized to NULL. | 22 // it is initialized to NULL. |
| 23 | 23 |
| 24 VMGlue::VMGlue(ISized* surface, | 24 VMGlue::VMGlue(ISized* surface, |
| 25 const char* script_path, | 25 const char* script_path, |
| 26 const char* extension_script, | 26 const char* extension_script, |
| 27 const char* main_script) | 27 const char* main_script, |
| 28 int setup_flag) |
| 28 : surface_(surface), | 29 : surface_(surface), |
| 29 isolate_(NULL), | 30 isolate_(NULL), |
| 30 initialized_script_(false), | 31 initialized_script_(false), |
| 31 x_(0.0), | 32 x_(0.0), |
| 32 y_(0.0), | 33 y_(0.0), |
| 33 z_(0.0), | 34 z_(0.0), |
| 34 accelerometer_changed_(false) { | 35 accelerometer_changed_(false), |
| 36 setup_flag_(setup_flag) { |
| 35 LOGI("Creating VMGlue"); | 37 LOGI("Creating VMGlue"); |
| 36 if (main_script == NULL) { | 38 if (main_script == NULL) { |
| 37 main_script = "main.dart"; | 39 main_script = "main.dart"; |
| 38 } | 40 } |
| 39 if (extension_script == NULL) { | 41 if (extension_script == NULL) { |
| 40 extension_script = "gl.dart"; | 42 extension_script = "gl.dart"; |
| 41 } | 43 } |
| 42 size_t len = strlen(script_path) + strlen(main_script) + 2; | 44 size_t len = strlen(script_path) + strlen(main_script) + 2; |
| 43 main_script_ = new char[len]; | 45 main_script_ = new char[len]; |
| 44 snprintf(main_script_, len, "%s/%s", script_path, main_script); | 46 snprintf(main_script_, len, "%s/%s", script_path, main_script); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 Dart_ExitScope(); | 202 Dart_ExitScope(); |
| 201 Dart_ExitIsolate(); | 203 Dart_ExitIsolate(); |
| 202 return 0; | 204 return 0; |
| 203 } | 205 } |
| 204 | 206 |
| 205 int VMGlue::CallSetup(bool force) { | 207 int VMGlue::CallSetup(bool force) { |
| 206 // TODO(gram): See if we actually need this flag guard here, or if | 208 // TODO(gram): See if we actually need this flag guard here, or if |
| 207 // we can eliminate it along with the need for the force parameter. | 209 // we can eliminate it along with the need for the force parameter. |
| 208 if (!initialized_script_ || force) { | 210 if (!initialized_script_ || force) { |
| 209 initialized_script_ = true; | 211 initialized_script_ = true; |
| 210 LOGI("Invoking setup(NULL, %d,%d)", surface_->width(), surface_->height()); | 212 LOGI("Invoking setup(null, %d,%d,%d)", |
| 213 surface_->width(), surface_->height(), setup_flag_); |
| 211 Dart_EnterIsolate(isolate_); | 214 Dart_EnterIsolate(isolate_); |
| 212 Dart_EnterScope(); | 215 Dart_EnterScope(); |
| 213 Dart_Handle args[3]; | 216 Dart_Handle args[4]; |
| 214 args[0] = CheckError(Dart_Null()); | 217 args[0] = CheckError(Dart_Null()); |
| 215 args[1] = CheckError(Dart_NewInteger(surface_->width())); | 218 args[1] = CheckError(Dart_NewInteger(surface_->width())); |
| 216 args[2] = CheckError(Dart_NewInteger(surface_->height())); | 219 args[2] = CheckError(Dart_NewInteger(surface_->height())); |
| 217 int rtn = Invoke("setup", 3, args); | 220 args[3] = CheckError(Dart_NewInteger(setup_flag_)); |
| 221 int rtn = Invoke("setup", 4, args); |
| 218 | 222 |
| 219 if (rtn == 0) { | 223 if (rtn == 0) { |
| 220 // Plug in the print handler. It would be nice if we could do this | 224 // Plug in the print handler. It would be nice if we could do this |
| 221 // before calling setup, but the call to GetField blows up if we | 225 // before calling setup, but the call to GetField blows up if we |
| 222 // haven't run anything yet. | 226 // haven't run anything yet. |
| 223 Dart_Handle library = CheckError(Dart_LookupLibrary( | 227 Dart_Handle library = CheckError(Dart_LookupLibrary( |
| 224 Dart_NewStringFromCString("gl.dart"))); | 228 Dart_NewStringFromCString("gl.dart"))); |
| 225 Dart_Handle print = CheckError( | 229 Dart_Handle print = CheckError( |
| 226 Dart_GetField(library, Dart_NewStringFromCString("_printClosure"))); | 230 Dart_GetField(library, Dart_NewStringFromCString("_printClosure"))); |
| 227 Dart_Handle corelib = CheckError(Dart_LookupLibrary( | 231 Dart_Handle corelib = CheckError(Dart_LookupLibrary( |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 | 357 |
| 354 void VMGlue::FinishMainIsolate() { | 358 void VMGlue::FinishMainIsolate() { |
| 355 LOGI("Finish main isolate"); | 359 LOGI("Finish main isolate"); |
| 356 Dart_EnterIsolate(isolate_); | 360 Dart_EnterIsolate(isolate_); |
| 357 // Shutdown the isolate. | 361 // Shutdown the isolate. |
| 358 Dart_ShutdownIsolate(); | 362 Dart_ShutdownIsolate(); |
| 359 isolate_ = NULL; | 363 isolate_ = NULL; |
| 360 initialized_script_ = false; | 364 initialized_script_ = false; |
| 361 } | 365 } |
| 362 | 366 |
| OLD | NEW |