static void task_netplay_lan_scan_handler(retro_task_t *task) { if (init_netplay_discovery()) { netplay_discovery_driver_ctl( RARCH_NETPLAY_DISCOVERY_CTL_LAN_CLEAR_RESPONSES, NULL); netplay_discovery_driver_ctl( RARCH_NETPLAY_DISCOVERY_CTL_LAN_SEND_QUERY, NULL); } task_set_progress(task, 100); task_set_finished(task, true); return; }
/** * task_screenshot_handler: * @task : the task being worked on * * Saves a screenshot to disk. **/ static void task_screenshot_handler(retro_task_t *task) { screenshot_task_state_t *state = (screenshot_task_state_t*)task->state; bool ret = false; if (task_get_progress(task) == 100) { task_set_finished(task, true); if (task->title) task_free_title(task); if (state->userbuf) free(state->userbuf); free(state); return; } ret = screenshot_dump_direct(state); #ifdef HAVE_IMAGEVIEWER if ( ret && !state->silence && state->history_list_enable ) command_playlist_push_write( g_defaults.image_history, state->filename, NULL, "builtin", "imageviewer", NULL, NULL); #endif task_set_progress(task, 100); if (!ret) { char *msg = strdup(msg_hash_to_str(MSG_FAILED_TO_TAKE_SCREENSHOT)); runloop_msg_queue_push(msg, 1, state->is_paused ? 1 : 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); free(msg); } if (task->title) task_free_title(task); }
/** * task_http_iterate_transfer: * * Resumes HTTP transfer update. * * Returns: 0 when finished, -1 when we should continue * with the transfer on the next frame. **/ static int task_http_iterate_transfer(retro_task_t *task) { http_handle_t *http = (http_handle_t*)task->state; size_t pos = 0, tot = 0; /* FIXME: This wouldn't be needed if we could wait for a timeout */ if (task_queue_is_threaded()) retro_sleep(1); if (!net_http_update(http->handle, &pos, &tot)) { task_set_progress(task, (tot == 0) ? -1 : (signed)(pos * 100 / tot)); return -1; } return 0; }
/** * task_screenshot_handler: * @task : the task being worked on * * Saves a screenshot to disk. **/ static void task_screenshot_handler(retro_task_t *task) { #ifdef HAVE_RBMP enum rbmp_source_type bmp_type = RBMP_SOURCE_TYPE_DONT_CARE; #endif screenshot_task_state_t *state = (screenshot_task_state_t*)task->state; struct scaler_ctx *scaler = (struct scaler_ctx*)&state->scaler; bool ret = false; if (task_get_progress(task) == 100) { task_set_finished(task, true); if (state->userbuf) free(state->userbuf); free(state); return; } #ifdef HAVE_RBMP (void)bmp_type; #endif #if defined(_XBOX1) if (XGWriteSurfaceToFile(state->surf, state->filename) == S_OK) ret = true; state->surf->Release(); #elif defined(HAVE_RPNG) if (state->bgr24) scaler->in_fmt = SCALER_FMT_BGR24; else if (state->pixel_format_type == RETRO_PIXEL_FORMAT_XRGB8888) scaler->in_fmt = SCALER_FMT_ARGB8888; else scaler->in_fmt = SCALER_FMT_RGB565; video_frame_convert_to_bgr24( scaler, state->out_buffer, (const uint8_t*)state->frame + ((int)state->height - 1) * state->pitch, state->width, state->height, -state->pitch); scaler_ctx_gen_reset(&state->scaler); ret = rpng_save_image_bgr24( state->filename, state->out_buffer, state->width, state->height, state->width * 3 ); free(state->out_buffer); #elif defined(HAVE_RBMP) if (state->bgr24) bmp_type = RBMP_SOURCE_TYPE_BGR24; else if (state->pixel_format_type == RETRO_PIXEL_FORMAT_XRGB8888) bmp_type = RBMP_SOURCE_TYPE_XRGB888; ret = rbmp_save_image(state->filename, state->frame, state->width, state->height, state->pitch, bmp_type); #endif #ifdef HAVE_IMAGEVIEWER if (ret && !state->silence) { if ( state->history_list_enable && g_defaults.image_history && playlist_push( g_defaults.image_history, state->filename, NULL, "builtin", "imageviewer", NULL, NULL ) ) playlist_write_file(g_defaults.image_history); } #endif task_set_progress(task, 100); if (!ret) { char *msg = strdup(msg_hash_to_str(MSG_FAILED_TO_TAKE_SCREENSHOT)); runloop_msg_queue_push(msg, 1, state->is_paused ? 1 : 180, true); free(msg); } }