Exemplo n.º 1
0
/* [gtk thread] */
static gboolean do_destroy_menu_item_at(gpointer data)
{
   ARGS *args = lock_args(data);
   
   gtk_widget_destroy(GTK_WIDGET(args->item->extra1));
   args->item->extra1 = NULL;
   
   return release_args(args);
}
Exemplo n.º 2
0
static gboolean do_hide_display_menu(gpointer data)
{
   ARGS *args = lock_args(data);
   
   gtk_widget_destroy(GTK_WIDGET(gtk_widget_get_parent(args->menu->extra1)));
   args->menu->extra1 = NULL;
   
   return release_args(data);
}
Exemplo n.º 3
0
/* [gtk thread] */
static gboolean do_destroy_menu(gpointer data)
{
   ARGS *args = lock_args(data);
   
   gtk_widget_destroy(args->menu->extra1);
   args->menu->extra1 = NULL;
   
   return release_args(args);
}
Exemplo n.º 4
0
/* [gtk thread] */
static gboolean do_insert_menu_item_at(gpointer data)
{
   ARGS *args = lock_args(data);
   if (!args->item->extra1) {
      args->item->extra1 = build_menu_item(args->item);
   }
   gtk_menu_shell_insert(GTK_MENU_SHELL(args->item->parent->extra1), args->item->extra1, args->i);
   
   return release_args(data);
}
Exemplo n.º 5
0
/* [gtk thread] */
static gboolean do_update_menu_item_at(gpointer data)
{
   ARGS *args = lock_args(data);
   GtkWidget *gitem;
   
   gtk_widget_destroy(args->item->extra1);
   args->item->extra1 = NULL;
   
   gitem = build_menu_item(args->item);
   gtk_menu_shell_insert(GTK_MENU_SHELL(args->item->parent->extra1), gitem, args->i);
   
   return release_args(args);
}
Exemplo n.º 6
0
static gboolean do_show_display_menu(gpointer data)
{
   ARGS *args = lock_args(data);
   
   if (!args->menu->extra1) {
      GtkWidget *gtk_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      GtkWidget *menu_bar = gtk_menu_bar_new();
      
      gtk_window_set_deletable(GTK_WINDOW(gtk_window), FALSE);
   
      build_menu(menu_bar, args->menu);
       
      gtk_container_add(GTK_CONTAINER(gtk_window), menu_bar);
      gtk_widget_show(menu_bar);
   
      gtk_window_set_default_size(GTK_WINDOW(gtk_window), 320, 32);
      args->menu->extra1 = menu_bar;
   }
   
   gtk_widget_show(gtk_widget_get_parent(args->menu->extra1));
   
   return release_args(args);
}
Exemplo n.º 7
0
/* [gtk thread] */
static gboolean do_show_popup_menu(gpointer data)
{
   ARGS *args = (ARGS *) data;
   
   lock_args(args);
   
   if (!args->menu->extra1) {
      GtkWidget *menu = gtk_menu_new();
      
      build_menu(menu, args->menu);
      
      gtk_widget_show(menu);
      args->menu->extra1 = menu;
      
      g_signal_connect_swapped (menu, "hide",
         G_CALLBACK(popop_on_hide), (gpointer) args->menu);
   }
   gtk_menu_popup(args->menu->extra1, NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
   
   release_args(args);
   
   return FALSE;
}
Exemplo n.º 8
0
void
Java_org_linaro_glmark2_native_init(JNIEnv* env, jclass clazz,
                                    jobject asset_manager,
                                    jstring args,
                                    jstring log_file)
{
    static_cast<void>(clazz);
    static const std::string arguments_file("/data/glmark2/args");
    int argc = 0;
    char **argv = 0;

    /* Load arguments from argument string or arguments file and parse them */
    if (args) {
        if (env->GetStringUTFLength(args) > 0) {
            const char *args_c_str = env->GetStringUTFChars(args, 0);
            if (args_c_str) {
                get_args_from_string(std::string(args_c_str), argc, argv);
                env->ReleaseStringUTFChars(args, args_c_str);
            }
        }
    }
    else {
        get_args_from_file(arguments_file, argc, argv);
    }

    Options::parse_args(argc, argv);
    release_args(argc, argv);

    /* Get the log file path and open the log file */
    const char *log_file_c_str = env->GetStringUTFChars(log_file, 0);
    if (log_file_c_str) {
        g_log_extra = new std::ofstream(log_file_c_str, std::ios::binary);
        env->ReleaseStringUTFChars(log_file, log_file_c_str);
    }

    /* Force reuse of EGL/GL context */
    Options::reuse_context = true;

    Log::init("glmark2", Options::show_debug, g_log_extra);
    Util::android_set_asset_manager(AAssetManager_fromJava(env, asset_manager));

    g_canvas = new CanvasAndroid(100, 100);
    g_canvas->init();

    Log::info("glmark2 %s\n", GLMARK_VERSION);
    g_canvas->print_info();

    std::vector<Scene*> scenes;

    /* Add and register scenes */
    create_and_add_scenes(scenes, *g_canvas);

    for (std::vector<Scene*>::const_iterator iter = scenes.begin();
            iter != scenes.end();
            iter++)
    {
        Benchmark::register_scene(**iter);
    }

    g_benchmark_collection = new BenchmarkCollection();
    g_benchmark_collection->populate_from_options();

    if (g_benchmark_collection->needs_decoration()) {
        g_loop = new MainLoopDecorationAndroid(*g_canvas,
                                               g_benchmark_collection->benchmarks());
    }
    else {
        g_loop = new MainLoopAndroid(*g_canvas,
                                     g_benchmark_collection->benchmarks());
    }
}
Exemplo n.º 9
0
void
Java_org_linaro_glmark2_native_init(JNIEnv* env, jclass clazz,
                                    jobject asset_manager,
                                    jstring args,
                                    jstring log_file)
{
    static_cast<void>(clazz);
    static const std::string arguments_file("/data/glmark2/args");
    int argc = 0;
    char **argv = 0;
    std::stringstream frameend_ss;

    /* Load arguments from argument string or arguments file and parse them */
    if (args) {
        if (env->GetStringUTFLength(args) > 0) {
            const char *args_c_str = env->GetStringUTFChars(args, 0);
            if (args_c_str) {
                get_args_from_string(std::string(args_c_str), argc, argv);
                env->ReleaseStringUTFChars(args, args_c_str);
            }
        }
    }
    else {
        get_args_from_file(arguments_file, argc, argv);
    }

    Options::parse_args(argc, argv);
    release_args(argc, argv);

    /* Get the log file path and open the log file */
    const char *log_file_c_str = env->GetStringUTFChars(log_file, 0);
    if (log_file_c_str) {
        g_log_extra = new std::ofstream(log_file_c_str, std::ios::binary);
        env->ReleaseStringUTFChars(log_file, log_file_c_str);
    }

    Log::init("glmark2", Options::show_debug, g_log_extra);
    Util::android_set_asset_manager(AAssetManager_fromJava(env, asset_manager));

    g_canvas = new CanvasAndroid(Options::size.first, Options::size.second);

    g_canvas->interval(Options::sync);

    g_canvas->init();

    Log::info("=======================================================\n");
    Log::info("    glmark2 %s\n", GLMARK_VERSION);
    Log::info("=======================================================\n");

    switch(Options::frame_end) {
        case Options::FrameEndSwap:
            frameend_ss << "Swap";
            break;
        case Options::FrameEndFinish:
            frameend_ss << "Finish";
            break;
        case Options::FrameEndFlush:
            frameend_ss << "Flush";
            break;
        case Options::FrameEndReadPixels:
            frameend_ss << "ReadPixels";
            break;
        case Options::FrameEndNone:
            frameend_ss << "None";
            break;
        case Options::FrameEndDefault:
            if (Options::offscreen)
                frameend_ss << "Default (Finish)";
            else
                frameend_ss << "Default (Swap)";
            break;
    }

    Log::info("Options:\n"
              "\t\treuse-context: %s\n"
              "\t\tsynchronous:   %s\n"
              "\t\toffscreen:     %s\n"
              "\t\tend-frame:     %s\n"
              "\t\tsize:          %dx%d%s\n",
              Options::reuse_context?"True":"False",
              Options::sync?"True":"False",
              Options::offscreen?"True":"False",
              frameend_ss.str().c_str(),
              g_canvas->width(), g_canvas->height(),
              (g_canvas->width() == -1 && g_canvas->height() == -1)?"(fullscreen)":"");

    g_canvas->print_info();
    Log::info("=======================================================\n");

    /* Add and register scenes */
    g_scene_collection = new SceneCollection(*g_canvas);
    g_scene_collection->register_scenes();

    g_benchmark_collection = new BenchmarkCollection();
    g_benchmark_collection->populate_from_options();

    if (g_benchmark_collection->needs_decoration()) {
        g_loop = new MainLoopDecorationAndroid(*g_canvas,
                                               g_benchmark_collection->benchmarks());
    }
    else {
        g_loop = new MainLoopAndroid(*g_canvas,
                                     g_benchmark_collection->benchmarks());
    }
}