From 41de3f7114fbb5ba145c86862b6d627e98799dcf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 30 Mar 2015 02:23:43 +0200 Subject: [PATCH] Integrate Xbox 1 code in screenshot.c --- screenshot.c | 25 ++++++++++++++++++- xdk/screenshot_xdk1.c | 56 ------------------------------------------- 2 files changed, 24 insertions(+), 57 deletions(-) diff --git a/screenshot.c b/screenshot.c index 6b3915537f..d8ce402c15 100644 --- a/screenshot.c +++ b/screenshot.c @@ -36,6 +36,11 @@ #include "config.h" #endif +#ifdef _XBOX1 +#include +#include +#endif + #ifdef HAVE_ZLIB_DEFLATE #include @@ -346,6 +351,7 @@ bool screenshot_dump(const char *folder, const void *frame, uint8_t *out_buffer = NULL; bool ret = false; global_t *global = global_get_ptr(); + driver_t *driver = driver_get_ptr(); (void)file; (void)out_buffer; @@ -355,7 +361,24 @@ bool screenshot_dump(const char *folder, const void *frame, fill_dated_filename(shotname, IMG_EXT, sizeof(shotname)); fill_pathname_join(filename, folder, shotname, sizeof(filename)); -#ifdef HAVE_ZLIB_DEFLATE +#ifdef _XBOX1 + d3d_video_t *d3d = (d3d_video_t*)driver->video_data; + settings_t *settings = config_get_ptr(); + + D3DSurface *surf = NULL; + d3d->dev->GetBackBuffer(-1, D3DBACKBUFFER_TYPE_MONO, &surf); + ret = XGWriteSurfaceToFile(surf, filename); + surf->Release(); + + if(ret == S_OK) + { + RARCH_LOG("Screenshot saved: %s.\n", filename); + rarch_main_msg_queue_push("Screenshot saved.", 1, 30, false); + return true; + } + + ret = false; +#elif defined(HAVE_ZLIB_DEFLATE) out_buffer = (uint8_t*)malloc(width * height * 3); if (!out_buffer) return false; diff --git a/xdk/screenshot_xdk1.c b/xdk/screenshot_xdk1.c index 6f904c06aa..e69de29bb2 100644 --- a/xdk/screenshot_xdk1.c +++ b/xdk/screenshot_xdk1.c @@ -1,56 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include -#include "../screenshot.h" -#include "../runloop.h" - -bool screenshot_dump(const char *folder, const void *frame, - unsigned width, unsigned height, int pitch, bool bgr24) -{ - char filename[PATH_MAX_LENGTH]; - char shotname[PATH_MAX_LENGTH]; - HRESULT ret = S_OK; - driver_t *driver = driver_get_ptr(); - settings_t *settings = config_get_ptr(); - d3d_video_t *d3d = (d3d_video_t*)driver->video_data; - - (void)folder; - (void)frame; - (void)width; - (void)height; - (void)pitch; - (void)bgr24; - - - fill_dated_filename(shotname, "bmp", sizeof(shotname)); - snprintf(filename, sizeof(filename), "%s\\%s", settings->screenshot_directory, shotname); - - D3DSurface *surf = NULL; - d3d->dev->GetBackBuffer(-1, D3DBACKBUFFER_TYPE_MONO, &surf); - ret = XGWriteSurfaceToFile(surf, filename); - surf->Release(); - - if(ret == S_OK) - { - RARCH_LOG("Screenshot saved: %s.\n", filename); - rarch_main_msg_queue_push("Screenshot saved.", 1, 30, false); - return true; - } - - return false; -}