Example #1
0
VALUE rho_ruby_main_thread()
{
    if (!rho_ruby_is_started())
        return Qnil;

    return rb_thread_main();
}
Example #2
0
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;
}
Example #3
0
void QtMainWindow::closeEvent(QCloseEvent *ce)
{
    rb_thread_wakeup(rb_thread_main());
    if (cb) cb->onWindowClose();
    tabbarRemoveAllTabs(false);
    webInspectorWindow->close();
    QMainWindow::closeEvent(ce);
}
Example #4
0
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;
  }
}
Example #5
0
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;
  }
}
Example #6
0
VALUE rho_ruby_main_thread()
{
    return rb_thread_main();
}