VALUE rho_ruby_main_thread() { if (!rho_ruby_is_started()) return Qnil; return rb_thread_main(); }
static VALUE application_initialize(VALUE self, VALUE args) { if (rb_thread_main() != rb_thread_current()) { rb_raise(rb_eThreadError, "Initializing QML::Application outside the main thread"); } application_t *data; TypedData_Get_Struct(self, application_t, &data_type, data); if (rb_type(args) != T_ARRAY) { rb_raise(rb_eTypeError, "Expected Array"); } args = rb_ary_concat(rb_ary_new_from_args(1, rb_argv0), args); int argc = RARRAY_LEN(args); char **argv = malloc(argc * sizeof(char *)); for (int i = 0; i < argc; ++i) { VALUE arg = RARRAY_AREF(args, i); argv[i] = rb_string_value_cstr(&arg); } data->application = qmlbind_application_new(argc, argv); return self; }
void QtMainWindow::closeEvent(QCloseEvent *ce) { rb_thread_wakeup(rb_thread_main()); if (cb) cb->onWindowClose(); tabbarRemoveAllTabs(false); webInspectorWindow->close(); QMainWindow::closeEvent(ce); }
VALUE wkhtml_toimage_converter_convert(VALUE self) { wkhtmltoimage_converter* converter; //See wkhtml_topdf_converter_convert if(rb_thread_main() != rb_thread_current()) { rb_raise(rb_eRuntimeError, "Yuck! You must be on the main thread for wkhtmltopdf to work"); } //Checks rb_check_frozen(self); Data_Get_Struct(self, wkhtmltoimage_converter, converter); if(wkhtmltoimage_convert(converter)) { //Freeze converter if successful OBJ_FREEZE(self); return Qtrue; } else { return Qfalse; } }
VALUE wkhtml_topdf_converter_convert(VALUE self) { wkhtmltopdf_converter* converter; //TODO QApplication is initialized on whatever thread `wkhtmltopdf_init` is called, otherwise events are //not sent properly if(rb_thread_main() != rb_thread_current()) { rb_raise(rb_eRuntimeError, "Yuck! You must be on the main thread for wkhtmltopdf to work"); } //Checks if(rb_ivar_get(self, idReady) != Qtrue) rb_raise(rb_eRuntimeError, "Object must be added first"); rb_check_frozen(self); Data_Get_Struct(self, wkhtmltopdf_converter, converter); if(wkhtmltopdf_convert(converter)) { OBJ_FREEZE(self); return Qtrue; } else { return Qfalse; } }
VALUE rho_ruby_main_thread() { return rb_thread_main(); }