summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/osdmini/miniwork.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/osdmini/miniwork.c')
-rw-r--r--src/osd/osdmini/miniwork.c57
1 files changed, 52 insertions, 5 deletions
diff --git a/src/osd/osdmini/miniwork.c b/src/osd/osdmini/miniwork.c
index 6acd1ba31e8..a0a971c71b1 100644
--- a/src/osd/osdmini/miniwork.c
+++ b/src/osd/osdmini/miniwork.c
@@ -2,8 +2,40 @@
//
// miniwork.c - Minimal core work item functions
//
-// Copyright Nicola Salmoria and the MAME Team.
-// Visit http://mamedev.org for licensing and usage restrictions.
+//============================================================
+//
+// Copyright Aaron Giles
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or
+// without modification, are permitted provided that the
+// following conditions are met:
+//
+// * Redistributions of source code must retain the above
+// copyright notice, this list of conditions and the
+// following disclaimer.
+// * Redistributions in binary form must reproduce the
+// above copyright notice, this list of conditions and
+// the following disclaimer in the documentation and/or
+// other materials provided with the distribution.
+// * Neither the name 'MAME' nor the names of its
+// contributors may be used to endorse or promote
+// products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+// EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGE (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//============================================================
@@ -69,17 +101,32 @@ void osd_work_queue_free(osd_work_queue *queue)
// osd_work_item_queue
//============================================================
-osd_work_item *osd_work_item_queue(osd_work_queue *queue, osd_work_callback callback, void *param, UINT32 flags)
+osd_work_item *osd_work_item_queue_multiple(osd_work_queue *queue, osd_work_callback callback, INT32 numitems, void *parambase, INT32 paramstep, UINT32 flags)
{
osd_work_item *item;
+ int itemnum;
// allocate memory to hold the result
item = malloc(sizeof(*item));
if (item == NULL)
return NULL;
- // execute the call directly
- item->result = (*callback)(param, 0);
+ // loop over all requested items
+ for (itemnum = 0; itemnum < numitems; itemnum++)
+ {
+ // execute the call directly
+ item->result = (*callback)(parambase, 0);
+
+ // advance the param
+ parambase = (UINT8 *)parambase + paramstep;
+ }
+
+ // free the item if requested
+ if (flags & WORK_ITEM_FLAG_AUTO_RELEASE)
+ {
+ free(item);
+ item = NULL;
+ }
return item;
}