コード例 #1
0
ファイル: menu.c プロジェクト: jens-maus/fs-uae
static void update_save_state_item(fs_emu_menu_item* item, int slot,
                                   int save) {
    char *title = check_save_state(slot);
    if (title) {
        fs_emu_menu_item_set_title(item, title);
        free(title);
    }
    else {
        fs_emu_menu_item_set_title(item, _("Empty"));
    }
}
コード例 #2
0
ファイル: menu.c プロジェクト: jens-maus/fs-uae
static int save_state_menu_function(fs_emu_menu_item *menu_item,
                                    void **result_data) {

    int slot = menu_item->idata;
    fs_emu_menu_item *item;
    fs_emu_menu *menu = fs_emu_menu_new();
    //fs_emu_menu_set_update_function(menu, update_save_states_menu);

    char *title = check_save_state(slot);

    item = fs_emu_menu_item_new();
    fs_emu_menu_append_item(menu, item);
    if (title) {
        fs_emu_menu_item_set_title(item, title);
    }
    else {
        fs_emu_menu_item_set_title(item, _("Empty"));
    }
    fs_emu_menu_item_set_type(item, FS_EMU_MENU_ITEM_TYPE_HEADING);

    item = fs_emu_menu_item_new();
    fs_emu_menu_append_item(menu, item);
    fs_emu_menu_item_set_title(item, _("Load"));
    fs_emu_menu_item_set_idata(item, slot);
    fs_emu_menu_item_set_enabled(item, title != NULL);
    fs_emu_menu_item_set_activate_function(item, load_function);

    item = fs_emu_menu_item_new();
    fs_emu_menu_append_item(menu, item);
    fs_emu_menu_item_set_title(item, _("Save"));
    fs_emu_menu_item_set_idata(item, slot);
    fs_emu_menu_item_set_activate_function(item, save_function);

    if (title) {
        free(title);
    }

    *result_data = menu;
    return FS_EMU_MENU_RESULT_MENU;
}
コード例 #3
0
ファイル: PictureTest.cpp プロジェクト: zwdsjl/skia
// Test out SkPictureRecorder::partialReplay
DEF_TEST(PictureRecorder_replay, reporter) {
    // check save/saveLayer state
    {
        SkPictureRecorder recorder;

        SkCanvas* canvas = recorder.beginRecording(10, 10);

        canvas->saveLayer(nullptr, nullptr);

        sk_sp<SkPicture> copy(SkPictureRecorderReplayTester::Copy(&recorder));

        // The extra save and restore comes from the Copy process.
        check_save_state(reporter, copy.get(), 2, 1, 3);

        canvas->saveLayer(nullptr, nullptr);

        sk_sp<SkPicture> final(recorder.finishRecordingAsPicture());

        check_save_state(reporter, final.get(), 1, 2, 3);

        // The copy shouldn't pick up any operations added after it was made
        check_save_state(reporter, copy.get(), 2, 1, 3);
    }

    // (partially) check leakage of draw ops
    {
        SkPictureRecorder recorder;

        SkCanvas* canvas = recorder.beginRecording(10, 10);

        SkRect r = SkRect::MakeWH(5, 5);
        SkPaint p;

        canvas->drawRect(r, p);

        sk_sp<SkPicture> copy(SkPictureRecorderReplayTester::Copy(&recorder));

        REPORTER_ASSERT(reporter, !copy->willPlayBackBitmaps());

        SkBitmap bm;
        make_bm(&bm, 10, 10, SK_ColorRED, true);

        r.offset(5.0f, 5.0f);
        canvas->drawBitmapRect(bm, r, nullptr);

        sk_sp<SkPicture> final(recorder.finishRecordingAsPicture());
        REPORTER_ASSERT(reporter, final->willPlayBackBitmaps());

        REPORTER_ASSERT(reporter, copy->uniqueID() != final->uniqueID());

        // The snapshot shouldn't pick up any operations added after it was made
        REPORTER_ASSERT(reporter, !copy->willPlayBackBitmaps());
    }

    // Recreate the Android partialReplay test case
    {
        SkPictureRecorder recorder;

        SkCanvas* canvas = recorder.beginRecording(4, 3, nullptr, 0);
        create_imbalance(canvas);

        int expectedSaveCount = canvas->getSaveCount();

        sk_sp<SkPicture> copy(SkPictureRecorderReplayTester::Copy(&recorder));
        check_balance(reporter, copy.get());

        REPORTER_ASSERT(reporter, expectedSaveCount = canvas->getSaveCount());

        // End the recording of source to test the picture finalization
        // process isn't complicated by the partialReplay step
        sk_sp<SkPicture> final(recorder.finishRecordingAsPicture());
    }
}