break;
}
#endif
-
- if (!state)
+ if (!state) {
+ switch(code)
+ {
+ case AKS_SCREENSHOT_FILE:
+ // stop multiscreenshot
+ screenshot(4, 1);
+ break;
+ }
return false;
+ }
+
switch (code)
{
case AKS_ENTERGUI:
setsystime ();
break;
case AKS_SCREENSHOT_FILE:
- screenshot (1, 1);
+ if (state > 1) {
+ screenshot(3, 1);
+ } else {
+ screenshot(1, 1);
+ }
break;
case AKS_SCREENSHOT_CLIPBOARD:
screenshot (0, 1);
return 0; // qualifiers do nothing
if (ie->unit == 0 && ie->data >= AKS_FIRST) {
isaks = true;
- if (!state) // release AKS_ does nothing
- return 0;
}
if (!isaks) {
/* pressed = firebutton, not pressed = autofire */
if (state) {
queue_input_event (evt, NULL, -1, 0, 0, 1);
- handle_input_event (evt, 1, 1, 0, true, false);
+ handle_input_event (evt, 2, 1, 0, true, false);
} else {
- handle_input_event (evt, 1, 1, autofire, true, false);
+ handle_input_event (evt, 2, 1, autofire, true, false);
}
didcustom |= process_custom_event (id, ID_BUTTON_OFFSET + button, state, qualmask, autofire, i);
} else if (toggle) {
if (!checkqualifiers (evt, flags, qualmask, NULL))
continue;
*flagsp ^= ID_FLAG_TOGGLED;
- int toggled = (*flagsp & ID_FLAG_TOGGLED) ? 1 : 0;
+ int toggled = (*flagsp & ID_FLAG_TOGGLED) ? 2 : 0;
handle_input_event (evt, toggled, 1, autofire, true, false);
didcustom |= process_custom_event (id, ID_BUTTON_OFFSET + button, toggled, qualmask, autofire, i);
} else {
na->flags[j][sublevdir[state == 0 ? 1 : 0][k]] &= ~ID_FLAG_TOGGLED;
if (state) {
queue_input_event (evt, NULL, -1, 0, 0, 1);
- handled |= handle_input_event (evt, 1, 1, 0, true, false);
+ handled |= handle_input_event (evt, 2, 1, 0, true, false);
} else {
- handled |= handle_input_event (evt, 1, 1, autofire, true, false);
+ handled |= handle_input_event (evt, 2, 1, autofire, true, false);
}
didcustom |= process_custom_event (na, j, state, qualmask, autofire, k);
} else if (toggle) {
if (!checkqualifiers (evt, flags, qualmask, na->eventid[j]))
continue;
*flagsp ^= ID_FLAG_TOGGLED;
- toggled = (*flagsp & ID_FLAG_TOGGLED) ? 1 : 0;
+ toggled = (*flagsp & ID_FLAG_TOGGLED) ? 2 : 0;
handled |= handle_input_event (evt, toggled, 1, autofire, true, false);
if (k == 0) {
didcustom |= process_custom_event (na, j, state, qualmask, autofire, k);
write_log(_T("Unplugged stored, port %d '%s' (%s)\n"), i, jp->idc.name, jp->idc.configname);
inputdevice_store_used_device(&jpt, i, defaultports);
freejport(p, i);
+ inputdevice_get_previous_joy(p, i);
+ matched[i] = true;
}
}
}
#include "gfxfilter.h"
#include "xwin.h"
#include "drawing.h"
+#include "fsdb.h"
#include "png.h"
int screenshotmode = PNG_SCREENSHOTS;
int screenshot_originalsize = 0;
int screenshot_clipmode = 0;
+int screenshot_multi = 0;
static void namesplit (TCHAR *s)
{
static LPVOID lpvBits = NULL; // pointer to bitmap bits array
static HBITMAP offscreen_bitmap;
static int screenshot_prepared;
+static int screenshot_multi_start;
void screenshot_free (void)
{
return 0;
}
+static void screenshot_prepare_multi(void)
+{
+ screenshot_multi_start = true;
+}
+
+static int filenumber = 0;
+static int dirnumber = 1;
+
/*
Captures the Amiga display (DirectDraw, D3D or OpenGL) surface and saves it to file as a 24bit bitmap.
*/
static int recursive;
FILE *fp = NULL;
int failed = 0;
+ int screenshot_max = 1000; // limit 999 iterations / screenshots
+ TCHAR *format = _T("%s%s%s%03d.%s");
HBITMAP offscreen_bitmap = NULL; // bitmap that is converted to a DIB
HDC offscreen_dc = NULL; // offscreen DC that we can select offscreen bitmap into
TCHAR path[MAX_DPATH];
TCHAR name[MAX_DPATH];
TCHAR underline[] = _T("_");
- int number = 0;
if (spath) {
fp = _tfopen (spath, _T("wb"));
}
fetch_path (_T("ScreenshotPath"), path, sizeof (path) / sizeof (TCHAR));
CreateDirectory (path, NULL);
+ if (screenshot_multi) {
+ TCHAR *p = path + _tcslen(path);
+ while(dirnumber < 1000) {
+ _stprintf(p, _T("%03d\\"), dirnumber);
+ if (!screenshot_multi_start)
+ break;
+ filenumber = 0;
+ if (!my_existsdir(path) && !my_existsfile(path))
+ break;
+ dirnumber++;
+ }
+ format = _T("%s%s%s%05d.%s");
+ screenshot_max = 100000;
+ screenshot_multi_start = 0;
+ if (dirnumber == 1000) {
+ failed = 1;
+ goto oops;
+ }
+ CreateDirectory(path, NULL);
+ }
+
+
name[0] = 0;
if (currprefs.floppyslots[0].dfxtype >= 0)
_tcscpy (name, currprefs.floppyslots[0].df);
underline[0] = 0;
namesplit (name);
- while(++number < 1000) // limit 999 iterations / screenshots
+ while(++filenumber < screenshot_max)
{
- _stprintf (filename, _T("%s%s%s%03d.%s"), path, name, underline, number, screenshotmode ? _T("png") : _T("bmp"));
+ _stprintf (filename, format, path, name, underline, filenumber, screenshotmode ? _T("png") : _T("bmp"));
if ((fp = _tfopen (filename, _T("rb"))) == NULL) // does file not exist?
{
int nok = 0;
recursive--;
+ if (failed)
+ screenshot_multi = 0;
+
return failed == 0;
}
void screenshot (int mode, int doprepare)
{
-#if 1
- screenshotf (NULL, mode, doprepare, -1, NULL);
-#else
+ if (mode == 2) {
+ screenshot_multi = 10;
+ screenshot_prepare_multi();
+ } else if (mode == 3) {
+ screenshot_multi = -1;
+ screenshot_prepare_multi();
+ } else if (mode == 4) {
+ screenshot_multi = 0;
+ filenumber = 0;
+ } else {
+ screenshotf(NULL, mode, doprepare, -1, NULL);
+ }
+
+#if 0
struct vidbuffer vb;
int w = gfxvidinfo.drawbuffer.inwidth;
int h = gfxvidinfo.drawbuffer.inheight;