66 #define MHEG5_SYNC_UPDATE 0 68 #define MAX_ACTION_LISTS (1 << 9) 69 #define ACTION_LIST_MASK (MAX_ACTION_LISTS - 1) 71 #define DO_ANY_EVENT 0x0 72 #define DEFER_ASYNC_EVENTS 0x1 73 #define SUSPEND_EVENTS 0x2 74 #define STOP_ALL_EVENTS 0x4 76 #define SYNC_Q_SIZE 128 77 #define SHORT_Q_SIZE 8 79 #define MAX_USER_EVENTS 2 83 #define DBGPrintAction(at, t, e, p) if (mheg_trace_debug & TACTIONS) { \ 84 TraceAction(at, t, e, p); } else { MHEG5PrintAction(t, e, p); } 86 #define DBGPrintAction(at, t, e, p) if (mheg_trace_debug & TACTIONS) { \ 87 TraceAction(at, t, e, p); } 89 #define DBGTraceEvent(lk) if (mheg_trace_debug & (TACTIONS | TEVNTS)) TraceEvent( lk ); 90 #define DBGTraceToken(lk, t, i) if (mheg_trace_debug & (TACTIONS | TEVNTS)) TraceToken( lk, t, i ); 91 #define DECLARE_RC MHEG5ErrorCode rc; 92 #define ASSIGN_RC extra_trace_param = 0; rc = 93 #define DBGCheckRC(t, a, p) if (rc != MHEG5ERR_NOERROR) TraceActionError(t, a, p, rc); 96 #define DBGPrintAction(at, t, e, p) MHEG5PrintAction(t, e, p); 98 #define ASSIGN_RC (void) 99 #define DBGCheckRC(t, a, p) 102 #define DBGPrintAction(at, t, e, p) printAction(t, e, p); 103 #define DECLARE_RC MHEG5ErrorCode rc; 104 #define ASSIGN_RC rc = 105 #define DBGCheckRC(t, a, p) if (rc != MHEG5ERR_NOERROR) printActionError(t, a, p, rc); 107 #define DBGPrintAction(at, t, e, p) 109 #define ASSIGN_RC (void) 110 #define DBGCheckRC(t, a, p) 113 #define DBGTraceEvent(lk) 114 #define DBGTraceToken(lk, t, i) 118 int extra_trace_param;
179 static void MHEG5DeferProcessing(
void);
180 static void CriticalMessageArrived(
void);
181 static void CriticalMessageProcessed(
void);
183 #ifdef MHEG5PROFILE_UK1_06 184 #define MHEG5toggle ActionNoProfileSupport 185 #define MHEG5setLabel ActionNoProfileSupport 186 #define MHEG5select ActionNoProfileSupport 187 #define MHEG5getSelectionStatus ActionNoProfileSupport 188 #define MHEG5getLabel ActionNoProfileSupport 189 #define MHEG5deselect ActionNoProfileSupport 190 #define MHEG5openConnection ActionNoProfileSupport 191 #define MHEG5closeConnection ActionNoProfileSupport 196 {ActionNotSupported,
NOTHING },
307 {ActionNotSupported, NOTHING },
308 {ActionNotSupported, NOTHING },
309 {ActionNotSupported, NOTHING },
310 {ActionNotSupported, NOTHING },
311 {ActionNotSupported, NOTHING },
312 {ActionNotSupported, NOTHING },
313 {ActionNotSupported, NOTHING },
314 {ActionNotSupported, NOTHING },
315 {ActionNotSupported, NOTHING },
316 {ActionNotSupported, NOTHING },
317 {ActionNotSupported, NOTHING },
318 {ActionNotSupported, NOTHING },
331 {ActionNotSupported, NOTHING },
335 {ActionNotSupported, NOTHING },
341 static unsigned int mainActionListHead = 0;
342 static unsigned int mainActionListTail = 0;
358 static void *state_mutex = NULL;
359 static void *queue_notify_hdl = NULL;
364 static int eventProcessingDisableCount = 0;
365 static int critical_msg_count = 0;
373 static MHEG5Int userInputEventCount = 0;
379 #if defined(MH5PRINTOUT) || defined(TRACING) 380 int event_indent_num = 0;
412 void MHEG5queuePrint(
char *out)
417 MHEG_PRINT(out,
"Asynchronous event queue:");
421 tail = a_queue->
tail;
422 while (tail != a_queue->
head)
424 MHEG_PRINT(out,
"Event from (");
426 MHEG_PRINT(out,
" ");
427 MHEG5intPrint(a_queue->
events[tail].
e_id, out);
428 MHEG_PRINT(out,
") ");
434 a_queue = a_queue->
next;
436 MHEG_PRINT(out,
"Synchronous event queue:");
440 for (tail = 0; tail != the_sync_q->
slen; tail++)
442 MHEG_PRINT(out,
"Event from (");
444 MHEG_PRINT(out,
" ");
446 MHEG_PRINT(out,
") ");
454 extern int mheg_trace_source;
460 if (mheg_trace_source & 2)
474 MHEG5intPrint(
id, buff);
481 static void TraceEvent(
MHEG5Link *link )
580 strcat(buff,
"true");
584 strcat(buff,
"false");
617 strcat(buff,
"UNKNOWN:");
639 strcat(buff,
"->BAD");
650 strcat(buff,
"// :InternalError ");
654 if (strlen(buff) > 196)
669 id = (target) ? target->
id : -1;
670 if (mheg_trace_debug & TACTIONS)
680 if (extra_trace_param != 0)
724 TRACE(TERROR, (
"%s(%d) - no slot for token position %d, slot %d",
MHEG5actionToString(type),
id, extra_trace_param >> 16, extra_trace_param & 0xffff))
751 MHEG5intPrint(eventItem->
e_data,
generic);
752 DEBUG_PRINT((
"INFO: Testing event source ( %d ), type %s, data %s\n", eventItem->
e_id, eventName,
generic));
770 MHEG5LogPrintf(MHEG5MESSAGE,
"ElementaryAction ");
771 MHEG5LogPrintAction(MHEG5MESSAGE, type );
772 MHEG5LogPrintf(MHEG5MESSAGE,
" from object ");
773 MHEG5LogPrintObjectRef(MHEG5MESSAGE, t->
grp, 0);
774 MHEG5LogPrintf(MHEG5MESSAGE,
" - ");
776 paramList = firstParam;
781 MHEG5genericPrint(paramList->
generic, buf, 0);
782 MHEG5LogPrintf(MHEG5MESSAGE,
"%s ", buf);
787 MHEG5LogPrintf(MHEG5MESSAGE,
"\n");
793 MHEG5LogPrintf(MHEG5WARNING,
"ERROR: ElementaryAction ");
794 MHEG5LogPrintAction(MHEG5WARNING, type );
795 MHEG5LogPrintf(MHEG5WARNING,
" from object ");
796 MHEG5LogPrintObjectRef(MHEG5WARNING, target->
grp, 0);
797 MHEG5LogPrintf(MHEG5WARNING,
" - ");
800 MHEG5LogPrintf(MHEG5WARNING,
" target ID %d - ", target->
id);
804 MHEG5LogPrintf(MHEG5WARNING,
" No target specified");
809 MHEG5LogPrintf(MHEG5WARNING,
"action not supported by this engine");
812 MHEG5LogPrintf(MHEG5WARNING,
"action not supported by profile %s",
MHEG5PROFILEID);
815 MHEG5LogPrintf(MHEG5WARNING,
"wrong number of params given");
818 MHEG5LogPrintf(MHEG5WARNING,
"target object is not available");
821 MHEG5LogPrintf(MHEG5WARNING,
"wrong type of target object");
824 MHEG5LogPrintf(MHEG5WARNING,
"param not available");
827 MHEG5LogPrintf(MHEG5WARNING,
"wrong type of param");
830 MHEG5LogPrintf(MHEG5WARNING,
" action aborted because one param is not active");
833 MHEG5LogPrintf(MHEG5WARNING,
" action aborted because of missing current scene");
836 MHEG5LogPrintf(MHEG5WARNING,
" action aborted because target not active");
839 MHEG5LogPrintf(MHEG5WARNING,
" action aborted because no such tokengroup item");
842 MHEG5LogPrintf(MHEG5WARNING,
" action aborted - no action slot found");
847 MHEG5LogPrintf(MHEG5WARNING,
"\n");
862 if (frst_a_queue != NULL)
865 if (the_sync_q != NULL)
868 TRACE(TKEYS, (
"state_mutex=%d", state_mutex))
869 if (state_mutex != NULL)
874 CriticalMessageArrived, CriticalMessageProcessed );
876 frst_a_queue->
next = NULL;
877 frst_a_queue->
tail = 0;
878 frst_a_queue->
head = 0;
879 last_a_queue = frst_a_queue;
882 the_sync_q->
slen = 0;
926 DEBUG_PRINT((
"INFO: MHEG5queueReset clearing event and action queues\n"));
927 TRACE(TEVNTS, (
"*************** QUEUE RESET *****************\n"))
928 e_q = frst_a_queue->
next;
935 frst_a_queue->
tail = frst_a_queue->
head;
936 frst_a_queue->
next = 0;
937 last_a_queue = frst_a_queue;
940 the_sync_q->
slen = 0;
942 i = mainActionListHead;
943 while (i != mainActionListTail)
945 mainActionLists[i].
a_ptr = NULL;
946 mainActionLists[i].
total = 0;
947 #if defined(MH5PRINTOUT) || defined(TRACING) 948 mainActionLists[i].indent = 0;
954 userInputEventCount = 0;
965 TRACE(TEVNTS, (
"**** Scene=%p, e_q->tail=0x%x, e_q->head=0x%x ****\n", grp, e_q->
tail, e_q->
head))
969 for (t = e_q->
tail; t != e_q->
head; t++)
983 the_sync_q->
slen = 0;
984 i = mainActionListHead;
985 while (i != mainActionListTail)
987 mainActionLists[i].
a_ptr = NULL;
988 mainActionLists[i].
total = 0;
989 #if defined(MH5PRINTOUT) || defined(TRACING) 990 mainActionLists[i].indent = 0;
997 userInputEventCount = 0;
1002 if (frst_a_queue != NULL)
1005 frst_a_queue = NULL;
1007 if (the_sync_q != NULL)
1012 if (state_mutex != NULL)
1018 if (queue_notify_hdl != NULL)
1021 queue_notify_hdl = NULL;
1024 userInputEventCount = 0;
1036 if (newTail == mainActionListHead)
1039 TRACE(TERROR, (
"Eeek! MainActionLists is FULL"))
1045 mainActionLists[mainActionListTail] = actions;
1046 #if defined(MH5PRINTOUT) || defined(TRACING) 1047 mainActionLists[mainActionListTail].indent = 1;
1049 mainActionListTail = newTail;
1060 static void doAsyncEvent(
S_EventInfo *eventItem )
1071 TRACE(TKEYS, (
": User Input, Edata=%d", eventItem->
e_data))
1073 userInputEventCount--;
1076 #if defined(MH5PRINTOUT) || defined(TRACING) 1077 event_indent_num = 0;
1085 assert( eventItem->
e_grp != NULL );
1088 assert((
unsigned int)eventItem->
e_grp != 0xfeeefeee);
1094 assert( !eventItem->e_clone );
1112 MHEG5PrintEvent(eventItem->
e_type, eventItem->
e_id);
1131 static void processSyncEvents(
void)
1138 mainActionListHead--;
1140 if (mainActionListHead == mainActionListTail)
1147 #ifndef ENABLE_RED_KEY_IN_3_11C 1151 mainActionListHead++;
1154 while (mainActionListHead != mainActionListTail &&
1155 mainActionLists[mainActionListHead].total == 0);
1156 mainActionListHead--;
1158 if (mainActionListHead == mainActionListTail)
1161 TRACE(TERROR, (
"Eeek! Head reached tail"))
1162 mainActionListHead++;
1168 mainActionLists[mainActionListHead] = (*pLinks)->linkEffect;
1169 #if defined(MH5PRINTOUT) || defined(TRACING) 1170 mainActionLists[mainActionListHead].indent = event_indent_num + 1;
1174 while (the_sync_q->
slen);
1185 while (actions.
total)
1206 while (actions.
total)
1222 static void processActions(
void)
1230 while (mainActionListHead != mainActionListTail)
1232 while (mainActionLists[mainActionListHead].total != 0)
1235 action = mainActionLists[mainActionListHead].
a_ptr;
1236 mainActionLists[mainActionListHead].
a_ptr++;
1237 mainActionLists[mainActionListHead].
total--;
1238 #if defined(MH5PRINTOUT) || defined(TRACING) 1239 event_indent_num = mainActionLists[mainActionListHead].indent;
1242 #ifdef DEBUG_ACTION_ENUMS 1243 assert( action->magic == ACTION_MAGIC_VAL );
1249 rq_stat = element_act[(int)action->
type].
stat;
1292 if (displayUpdateRequested)
1301 if (the_sync_q->
slen)
1303 processSyncEvents();
1312 assert( mainActionLists[mainActionListHead].total == 0 );
1313 mainActionListHead++;
1336 unsigned int newHead;
1346 if (the_sync_q->
slen)
1348 processSyncEvents();
1360 assert( frst_a_queue );
1364 a_queue = frst_a_queue;
1368 doAsyncEvent( a_queue->
events + a_queue->
tail );
1382 frst_a_queue = a_queue->
next;
1412 temp_event_q.
slen = 0;
1413 tmp_action_q[0] = act_q;
1414 action_list_ptr = tmp_action_q + 1;
1417 save_sync_q = the_sync_q;
1420 #if defined(MH5PRINTOUT) || defined(TRACING) 1427 while (action_list_ptr->
total != 0)
1429 action = action_list_ptr->
a_ptr;
1430 action_list_ptr->
a_ptr++;
1431 action_list_ptr->
total--;
1439 rq_stat = element_act[(int)action->
type].
stat;
1477 if (temp_event_q.
slen != 0)
1482 temp_event_q.
slen--;
1487 while (temp_event_q.
slen != 0);
1490 assert( action_list_ptr->
total == 0 );
1491 }
while (action_list_ptr != tmp_action_q);
1493 the_sync_q = save_sync_q;
1494 action_list_ptr = NULL;
1504 if (action_list_ptr != NULL)
1507 *action_list_ptr = actions;
1511 mainActionListHead--;
1515 mainActionLists[mainActionListHead] = actions;
1517 #if defined(MH5PRINTOUT) || defined(TRACING) 1518 mainActionLists[mainActionListHead].indent = event_indent_num + 1;
1549 INFO_PRINT((
"INFO: MHEG5sendEvent: Ignoring event %d - source is invalid\n", a_type));
1556 INFO_PRINT((
"INFO: MHEG5sendEvent: Ignoring event %d (from %ld) - queueEvents is FALSE\n", a_type, source->
id));
1563 TRACE(TKEYS, (
": User Input, Edata=%d", data))
1568 INFO_PRINT((
"INFO: MHEG5sendEvent: Too many user input events\n"));
1590 new_tail = last_a_queue->
head;
1592 if (new_tail == last_a_queue->
tail)
1596 if (last_a_queue->
next == NULL)
1601 last_a_queue = last_a_queue->
next;
1602 last_a_queue->
next = NULL;
1603 last_a_queue->
tail = 0;
1604 last_a_queue->
head = 1;
1605 newInfo = last_a_queue->
events;
1609 newInfo = last_a_queue->
events + last_a_queue->
head;
1610 last_a_queue->
head = new_tail;
1615 newInfo->
e_id = source->
id;
1626 userInputEventCount++;
1656 #ifdef REVERSE_MULTIPLE_LINK_ORDER 1666 INFO_PRINT((
"INFO: MHEG5sendSync: Ignoring event %d (from %ld) - queueEvents is FALSE\n", e_type, source->
id));
1681 if (link->
source == source_id)
1695 #ifdef REVERSE_MULTIPLE_LINK_ORDER 1701 links[count++] = link;
1705 if (the_sync_q->
slen != the_sync_q->
size)
1711 the_sync_q->
links[the_sync_q->
slen] = link;
1728 #ifdef REVERSE_MULTIPLE_LINK_ORDER 1731 if (the_sync_q->
slen != the_sync_q->
size)
1733 the_sync_q->
links[the_sync_q->
slen] = links[count];
1759 assert(eventProcessingDisableCount > 0);
1762 eventProcessingDisableCount--;
1764 if (eventProcessingDisableCount <= 0)
1774 assert(eventProcessingDisableCount <= 1);
1777 eventProcessingDisableCount++;
1797 eventProcessingDisableCount = 0;
1809 static void MHEG5DeferProcessing(
void)
1822 void CriticalMessageArrived(
void)
1825 critical_msg_count++;
1835 void CriticalMessageProcessed(
void)
1838 assert( critical_msg_count > 0 );
1839 if (critical_msg_count > 0)
1841 critical_msg_count--;
1842 if (critical_msg_count == 0)
MHEG5Bool availabilityStatus
void MHEG5sendEvent(MHEG5Root *source, MHEG5EventType a_type, MHEG5Int data)
Store an event in the asynchronous event queue .
MHEG5ErrorCode MHEG5setLineWidth(MHEG5Root *target, MHEG5GList *params)
#define DBGCheckRC(t, a, p)
MHEG5ErrorCode MHEG5subtract(MHEG5Root *target, MHEG5GList *params)
Subtract Value from Target Variable. Target variable is the first operand of the infix operation...
MHEG5ErrorCode MHEG5sendEventAction(MHEG5Root *target, MHEG5GList *params)
The actions inserts an event defined by the given parameters into the systems event queue...
MHEG5ErrorCode MHEG5clone(MHEG5Root *target, MHEG5GList *params)
Implementation of the Clone action Clone (CloneRefVar) If the engine supports the Cloning option the ...
MHEG5ErrorCode MHEG5getLineWidth(MHEG5Root *target, MHEG5GList *params)
Retrieve the current Line Width of the DynamicLineart object Implementation of the GetLineWidth actio...
MHEG5ErrorCode MHEG5getFocusPosition(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5move(MHEG5Root *target, MHEG5GList *params)
Move the token between elements of the group. The movement to apply from any particular element locat...
MHEG5Bool MHEG5sameGroup(MH5GroupPtr gptr, MH5GroupRef gref)
Compares group ptr with group ref to see whether they both reference the same group. The first is pointer to group, the second can be a relative group name and will be converted to absolute prior to the comparison, so two different references that resolve to reference the same group name produces a True return value.
MHEG5ErrorCode MHEG5getListItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup GetListItem elementary action.
Event to String conversion.
MHEG5ErrorCode MHEG5getFirstItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup GetFirstItem elementary action.
MHEG5ErrorCode MHEG5openConnection(MHEG5Root *target, MHEG5GList *params)
Impelemtation of the OpenConnection (OpenSucceeded, Protocol, Address, ConnectionTag) action of the a...
MHEG5Ingredient ingredient
struct s_SyncEventQ S_SyncQueue
MHEG5ErrorCode MHEG5getLineColour(MHEG5Root *target, MHEG5GList *params)
Retrieve the current LineColour of the DynamicLineart Object Implementation of the GetLineColour acti...
MHEG5ErrorCode MHEG5getListSize(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup GetListSize elementary action.
MHEG5ErrorCode MHEG5callActionSlot(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5setCursorShape(MHEG5Root *target, MHEG5GList *params)
This action sets a new cursor shape. Implementation of the SetCursorShape (NewCursorShape) action of ...
MHEG5ErrorCode MHEG5getHighlightStatus(MHEG5Root *target, MHEG5GList *params)
void MHEG5stopEventsAndResetQueue(void)
Discard any pending events and actions and prevent future events from being queued. And reset queues. See also MHEG5queueEvents.
MHEG5ErrorCode MHEG5preload(MHEG5Root *target, MHEG5GList *params)
Implementation of the Preload action Preload Prepares an Ingredient and provides a hint to the MHEG-5...
MHEG5ErrorCode MHEG5getInteractionStatus(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5setCounterTrigger(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to update the list of CounterTriggers for a Stream object SetCounterTrig...
struct s_EventQ S_EventQueue
MHEG5ErrorCode MHEG5unload(MHEG5Root *target, MHEG5GList *params)
Implementation of the Unload action Unload Destroys an Ingredient and provides a hint to the MHEG-5 e...
void MHEG5queueUnresolveTargets(MHEG5ActionList actions)
Clear targets for the action list.
MHEG5ErrorCode MHEG5getVideoDecodeOffset(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetVideoDecodeOffset (XOffsetVar, YOffsetVar) action of the video class...
MHEG5ErrorCode MHEG5setFirstItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup SetFirstItem elementary action.
MHEG5ErrorCode MHEG5deselectItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup DeselectItem elementary action.
MHEG5ErrorCode MHEG5setTextColour(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to set the TextColour to the given colour. Implementation of the MHEG5se...
MHEG5Root * MHEG5findObject(MH5GroupRef gid, MHEG5Int id)
void MHEG5displayUpdate(void)
Update the display, redrawing any visible objects that are in the dirty rectangle.
void STB_OSDeleteMutex(void *mutex)
Delete a mutex.
void MHEG5displayUnlockStreams(void)
Unlock streams, allow stream updates.
MHEG5ErrorCode MHEG5getAvailabilityStatus(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetAvailabilityStatus action GetAvailabilityStatus (AvailabilityStatusVar) Set ...
MHEG5ErrorCode MHEG5getOverwriteMode(MHEG5Root *target, MHEG5GList *params)
Retrieve the overwrite mode of the entryfield Implementation of the GetOverwriteMode action of the en...
MHEG5ErrorCode MHEG5getEngineSupport(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetEngineSupport action of the application class GetEngineSupport (Feature...
MHEG5ErrorCode MHEG5getRunningStatus(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetRunningStatus action GetRunningStatus (RunningStatusVar) Set the Variable re...
MHEG5ErrorCode MHEG5setVideoDecodeOffset(MHEG5Root *target, MHEG5GList *params)
Implementation of the SetVideoDecodeOffset (NewXOffset, NewYOffset) action of the video class...
MHEG5ErrorCode MHEG5getBoxSize(MHEG5Root *target, MHEG5GList *params)
Returns the size of the bounding box of the target Visible. Implementation of the GetBoxSize (XBoxSiz...
MHEG5ErrorCode MHEG5unlockScreen(MHEG5Root *target, MHEG5GList *params)
Impelemtation of the UnlockScreen action of the application class This action may refresh the display...
union sMH5GroupRef::@5 ptr
MHEG5ErrorCode MHEG5setCounterEndPosition(MHEG5Root *target, MHEG5GList *params)
Implementation of the SetCounterEndPosition (Target, NewPosition) action of the stream class...
#define DBGTraceEvent(lk)
MHEG5ErrorCode MHEG5drawArc(MHEG5Root *target, MHEG5GList *params)
Draws an arc between "StartAngle" and "StartAngle" + "ArcAngle". Implementation of the DrawArc action...
void initialiseActiveLinkQs(void)
<Function description>="">
MHEG5ErrorCode MHEG5getTextData(MHEG5Root *target, MHEG5GList *params)
Set the Variable referenced by TextDataVar to the value of the TextData attribute. Implementation of the GetTextData (Target, TextDataVar) action of the text class.
MHEG5Short MHEG5ElemActionType
MHEG5ErrorCode MHEG5addItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup AddItem elementary action.
MHEG5ErrorCode MHEG5setHighlightStatus(MHEG5Root *target, MHEG5GList *params)
union MHEG5Generic::@6 value
void MHEG5sendSync(MHEG5Root *source, MHEG5EventType e_type, MHEG5Int e_data)
Store an event in the synchronous event queue.
MHEG5ErrorCode MHEG5multiply(MHEG5Root *target, MHEG5GList *params)
Multiplies Target Variable by Value. Target variable is the first operand of the infix operation...
MHEG5ErrorCode MHEG5setBackgroundColour(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to set the BackgroundColour to the given colour. Implementation of the M...
MHEG5ActionList linkEffect
MHEG5ErrorCode MHEG5step(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to modify the SliderValue of the target by the number given...
MHEG5ErrorCode MHEG5run(MHEG5Root *target, MHEG5GList *params)
<Function description>="">
MHEG5ErrorCode MHEG5setEntryPoint(MHEG5Root *target, MHEG5GList *params)
Set the entrypoint for the entryfield Implementation of the SetEntryPoint action of the entryfield cl...
MHEG5ErrorCode MHEG5putBehind(MHEG5Root *target, MHEG5GList *params)
Put a Visible exactly below another Visible in the display stack. Implementation of the PutBehind (Re...
void MHEG5requestDisplayUpdate(void)
Request display update at the end of synchronous event processing Note that this function can only be...
MHEG5ErrorCode MHEG5drawRectangle(MHEG5Root *target, MHEG5GList *params)
Draws a rectangle. Implementation of the DrawRectangle action of the dynamiclineart class...
MHEG5ErrorCode MHEG5divide(MHEG5Root *target, MHEG5GList *params)
Divides Target Variable by Value. Target variable is the first operand of the infix operation...
MHEG5ErrorCode MHEG5getLastAnchorFired(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5drawPolygon(MHEG5Root *target, MHEG5GList *params)
Draw a closed polygon. Implementation of the DrawPolygon action of the dynamiclineart class...
MHEG5ErrorCode MHEG5deactivate(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5setInputRegister(MHEG5Root *target, MHEG5GList *params)
Change the InputEventRegister attribute of the target Scene object. Changing the register will affect...
MHEG5ErrorCode MHEG5setBitmapDecodeOffset(MHEG5Root *target, MHEG5GList *params)
Implementation of the SetBitmapDecodeOffset (NewXOffset, NewYOffset) action of the bitmap class...
MHEG5ErrorCode MHEG5getCellItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup GetCellItem elementary action.
MHEG5ErrorCode MHEG5delItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup DelItem elementary action.
MHEG5ErrorCode MHEG5setData(MHEG5Root *target, MHEG5GList *params)
Implementation of SetData action SetData (NewContent) Set the Content attribute of the target Ingredi...
struct sMHEG5EventInfo S_EventInfo
MHEG5ErrorCode MHEG5call(MHEG5Root *target, MHEG5GList *params)
const char * MHEG5actionToString(MHEG5ElemActionType action)
MHEG5Root * MHEG5resolveRealObject(MHEG5Root *objref)
MHEG5ErrorCode MHEG5setFillColour(MHEG5Root *target, MHEG5GList *params)
void STB_OSMutexUnlock(void *mutex)
Unlock a mutex (a.k.a. 'leave', 'signal' or 'release')
#define DBGPrintAction(at, t, e, p)
MHEG5ErrorCode MHEG5closeConnection(MHEG5Root *target, MHEG5GList *params)
Impelemtation of the CloseConnection(ConnectionTag) action of the application class |NOT IMPLEMENTED...
void MHEG5sendAppEngineEvent(E_ENGINE_EVENT engine_event)
Store an Engine event in the asynchronous event queue.
MHEG5ErrorCode MHEG5storePersistent(MHEG5Root *target, MHEG5GList *params)
Implementation of the StorePersistent (StoreSucceeded, InVariables, OutFileName) action from the appl...
MHEG5ErrorCode MHEG5sendToBack(MHEG5Root *target, MHEG5GList *params)
Put a Visible at the background of the screen. Implementation of the SendToBack action of the visible...
This file defines the profile for the MHEG engine.
MHEG5ErrorCode MHEG5add(MHEG5Root *target, MHEG5GList *params)
Add Target Variable to Value. Target variable is the first operand of the infix operation. Result is stored in Target Variable. Implementation of the Add (Value) action of the IntegerVariable class.
void * VQ_RegisterNotify(F_QueueNotify normal_rcvd, F_QueueNotify critical_rcvd, F_QueueNotify critical_done)
MHEG5ErrorCode MHEG5launch(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode(* F_Action)(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5moveTo(MHEG5Root *target, MHEG5GList *params)
Move the token to a specific element of the group. Implementation of the MoveTo (Target, Index) action of the TokenManager class.
Implement Functions to support Service Gateways. Functions for standarizing several GroupIDs like +DS...
MHEG5ErrorCode MHEG5setDesktopColour(MHEG5Root *target, MHEG5GList *params)
Impelemtation of the SetDesktopColour action of the application class This action may refresh the dis...
MHEG5ErrorCode MHEG5readPersistent(MHEG5Root *target, MHEG5GList *params)
Implementation of the ReadPersistent (ReadSucceded, OutVariables, InFileName) action from the applica...
MHEG5Link * links[SYNC_Q_SIZE]
const char * MHEG5eventToString(MHEG5EventType event)
MHEG5ErrorCode MHEG5getFillColour(MHEG5Root *target, MHEG5GList *params)
Retrieve the current FillColour of the Dynamic Lineart object. Implementation of the GetFillColour ac...
void * STB_OSCreateMutex(void)
Create a mutex.
MHEG5ErrorCode MHEG5getPortion(MHEG5Root *target, MHEG5GList *params)
This action retrieves the size of the slider portion and stores it in the PortionVar, which is passed to this action as the second parameter. Implementation of the GetPortion (Target, PortionVar) action of the slider class.
MHEG5ErrorCode MHEG5setSpeed(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to change the speed in which the stream is displayed. Implementation of the SetSpeed (Target, NewSpeed) action of the stream class. SetSpeed (NewSpeed) Change the presentation speed of a stream. Execute the following sequence of actions:
MHEG5ErrorCode MHEG5setInputMask(MHEG5Root *target, MHEG5GList *params)
Change the InputMask attribute of the target Scene object. Changing the registermask will affect how ...
Event handling. Implementation of a combined queue for events and actions. This is the eventsystem wh...
MHEG5ErrorCode MHEG5getCursorPosition(MHEG5Root *target, MHEG5GList *params)
The effect of this action is that the current cursor position is retrieved and stored in the given va...
MHEG5ErrorCode MHEG5getVolume(MHEG5Root *target, MHEG5GList *params)
Returns the volume of an Audio. Implementation of the GetVolume (VolumeVar) action of the audio class...
void MHEG5PrependActionList(MHEG5ActionList actions)
The supplied list of actions should execute before others on the queue.
MHEG5ErrorCode MHEG5fork(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5testVariable(MHEG5Root *target, MHEG5GList *params)
This action tests variables agains each other or against values Implementation of the TestVariable (T...
void MHEG5queueResolveTargets(MHEG5ActionList actions)
Finds targets for the action list.
MHEG5ErrorCode MHEG5setPortion(MHEG5Root *target, MHEG5GList *params)
This action sets the portion of the slider to a new value, given as the second parameter to this acti...
MHEG5ErrorCode MHEG5setVolume(MHEG5Root *target, MHEG5GList *params)
Change the volume of an audio. Implementation of the SetVolume (NewVolume) action of the audio class...
MHEG5Link * links[SHORT_Q_SIZE]
void MHEG5ExitQueues(void)
MHEG5ErrorCode MHEG5selectItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup SelectItem elementary action.
void MHEG5AppendActionList(MHEG5ActionList actions)
The supplied list of actions should execute after any already on queue.
Implement functions to retrieve MHEG5objects by GroupID and ID.
Implementation of the MHEG5 Application Class Defines a set of Ingredient objects, which are shared within an application scope. Base class: Group Subclasses: None Status: Concrete class.
void MHEG5actionListExecute(MHEG5Group *source, MHEG5ActionList act_q)
Execute the supplied list of actions immediately. The actions will have been executed by the time the...
struct s_ShortSyncQ S_ShortSyncQ
MHEG5ErrorCode MHEG5setSliderValue(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to set the SliderValue to the given value. Implementation of the SetSlid...
MHEG5ErrorCode MHEG5getTextContent(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to transfer the data of the content attribute of the text to the variabl...
Mheg5 logging and debug printing.
void MHEG5enableEventProcessing(MHEG5Bool enable)
Enable or disable engine event processing. This function is used to implement the Call action for res...
MHEG5ErrorCode MHEG5clear(MHEG5Root *target, MHEG5GList *params)
Fills up the bounding box with the OriginalRefFillColour. Implementation of the Clear action of the d...
MHEG5ErrorCode MHEG5setLineColour(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5setVariable(MHEG5Root *target, MHEG5GList *params)
Set the Value attribute of the Target object to NewVariableValue. Implementation of the SetVariable (...
MHEG5ErrorCode MHEG5transitionTo(MHEG5Root *target, MHEG5GList *params)
This function performs the TransitionTo action which leads to a new scene. Implementation of the Tran...
MHEG5ErrorCode MHEG5scaleBitmap(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to scale the contents of the Bitmap to the size (XScale, YScale). Implementation of the ScaleBitmap (XScale, YScale) action of the bitmap class.
MHEG5Link * activeLinksHead[MHEG5LASTEVENT+1]
MHEG5ErrorCode MHEG5setOverwriteMode(MHEG5Root *target, MHEG5GList *params)
Set the overwrite mode of the entryfield to the new value of the parameter Implementation of the SetO...
void MHEG5processQueue(void)
Process all pending events and actions. After processing all events and actions, Normally there will ...
MHEG5ErrorCode MHEG5drawOval(MHEG5Root *target, MHEG5GList *params)
Draws an ellipse bounded by the rectangle defined by the parameters. Implementation of the DrawOval a...
MHEG5ErrorCode MHEG5drawLine(MHEG5Root *target, MHEG5GList *params)
Draws a line between ("X1", "Y1") and ("X2", "Y2"). Implementation of the DrawLine action of the dyna...
MHEG5ErrorCode MHEG5drawPolyline(MHEG5Root *target, MHEG5GList *params)
Draws series of joint lines. Implementation of the DrawPolyline action of the dynamiclineart class...
MHEG5ErrorCode MHEG5activate(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5quit(MHEG5Root *target, MHEG5GList *params)
Implementation of the Quit action from the application class Close an application and restart the pre...
MHEG5ErrorCode MHEG5getCounterMaxPosition(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetCounterMaxPosition (Target, CounterPositionVar) action of the stream class...
MHEG5ErrorCode MHEG5setBoxSize(MHEG5Root *target, MHEG5GList *params)
Change the size of the bounding box of the target Visible. Implementation of the SetBoxSize (XNewBoxS...
action to string conversion
void MHEG5queueResetScene(MHEG5Root *grp)
Reset both event queues and the action queue, discarding any pending events and actions for this scen...
MHEG5ErrorCode MHEG5spawn(MHEG5Root *target, MHEG5GList *params)
Implementation of the Spawn action from the application class +Execute the OnSpawnCloseDown Action of...
MHEG5ErrorCode MHEG5setLineStyle(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5setTimer(MHEG5Root *target, MHEG5GList *params)
This actions sets a new Timer which results in a TimerFired event when the given time is reached...
MHEG5ErrorCode MHEG5getPosition(MHEG5Root *target, MHEG5GList *params)
Returns the location of the target Visible.
void STB_OSMutexLock(void *mutex)
Lock a mutex (a.k.a. 'enter', 'wait' or 'get').
MHEG5ErrorCode MHEG5setFontRef(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to change the character font used to preset a text. Implementation of th...
MHEG5ErrorCode MHEG5getBitmapDecodeOffset(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetBitmapDecodeOffset (XOffset, YOffset) action of the bitmap class GetBitmapDe...
MHEG5ErrorCode MHEG5modulo(MHEG5Root *target, MHEG5GList *params)
Returns the remainder modulo Value of Target - as defined by usual integer arithmetic rules...
MHEG5ErrorCode MHEG5lockScreen(MHEG5Root *target, MHEG5GList *params)
Implementation of the LockScreen action of the application class Freeze the display screen and preven...
MHEG5ErrorCode MHEG5getSliderValue(MHEG5Root *target, MHEG5GList *params)
This action retrieves the SliderValue from the target and stores it in the variable, passed as the second parameter of this action. Implementation of the GetSliderValue (Target, SliderValueVar) action of the slider class.
MHEG5ErrorCode MHEG5setPosition(MHEG5Root *target, MHEG5GList *params)
Change the location of the target Visible. Implementation of the SetPosition (NewXPosition, NewYPosition) action of the visible class.
MHEG5ErrorCode MHEG5setCachePriority(MHEG5Root *target, MHEG5GList *params)
Implementation of the SetCachePriority action SetCachePriority (NewCachePriority) Set the GroupCacheP...
MHEG5GList * origFirstParam
MHEG5ErrorCode MHEG5append(MHEG5Root *target, MHEG5GList *params)
Appends AppendValue to Target Variable. Target variable is the first operand of the infix operation...
MHEG5ErrorCode MHEG5scrollItems(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup ScrollItems elementary action.
void MHEG5eventProcessingReset(void)
Causes the MHEG5enableEventProcessing counter to be reset to 0, and event processing to be enabled...
MHEG5ErrorCode MHEG5bringToFront(MHEG5Root *target, MHEG5GList *params)
Put a Visible at the foreground of the screen, i.e. on top of the Display Stack Implementation of the...
MHEG5ErrorCode MHEG5setInteractionStatus(MHEG5Root *target, MHEG5GList *params)
MHEG5Boolean targetIsIndirect
MHEG5ErrorCode MHEG5setFocusPosition(MHEG5Root *target, MHEG5GList *params)
#define USE_UNWANTED_PARAM(param)
MHEG5ErrorCode MHEG5getEntryPoint(MHEG5Root *target, MHEG5GList *params)
Retrieve the current entrypoint of the entryfield Implementation of the GetEntryPoint action of the e...
MHEG5ErrorCode MHEG5drawSector(MHEG5Root *target, MHEG5GList *params)
Draws a sector between "StartAngle" and "StartAngle" + "ArcAngle". Implementation of the DrawSector a...
MHEG5GList * MHEG5resolveORef(MHEG5GList *params, MHEG5Root **object)
int MHEG5InitQueues(void)
void VQ_UnRegisterNotify(void *qn)
Implement generic MHEG5-display functions - independent from the OSD These are generic functions used...
MHEG5ErrorCode MHEG5getLineStyle(MHEG5Root *target, MHEG5GList *params)
Retrieve the current Line Style of the DynamicLineArt object Implementation of the GetLineStyle actio...
MHEG5ErrorCode MHEG5getItemStatus(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup GetItemStatus elementary action.
void MHEG5queueEvents(void)
Allow future events to be stored in the event queues. See also MHEG5discardEvents.
MHEG5ErrorCode MHEG5stop(MHEG5Root *target, MHEG5GList *params)
MHEG5ErrorCode MHEG5setPaletteRef(MHEG5Root *target, MHEG5GList *params)
Change the colour look-up table used to render colours of the Visible object. Implementation of the S...
MHEG5ErrorCode MHEG5getCounterPosition(MHEG5Root *target, MHEG5GList *params)
Implementation of the GetCounterPosition (Target, CounterPositionVar) action of the stream class...
MHEG5ErrorCode MHEG5setCounterPosition(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to set the display counter to a new position. Implementation of the SetC...
MHEG5ErrorCode MHEG5setSliderParameters(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to set the MinValue, MaxValue and StepSize to the given values...
MHEG5ErrorCode MHEG5setCellPosition(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup SetCellPosition elementary action.
struct sMHEG5GList * next
MHEG5ErrorCode MHEG5setFontAttributes(MHEG5Root *target, MHEG5GList *params)
The effect of this action is to set the FontAttributes to the given attributes. Implementation of the...
MHEG5ErrorCode MHEG5toggleItem(MHEG5Root *target, MHEG5GList *params)
Implementation of the ListGroup ToggleItem elementary action.
#define DEFER_ASYNC_EVENTS
MHEG5ErrorCode MHEG5scaleVideo(MHEG5Root *target, MHEG5GList *params)
Implementation of the ScaleVideo (XScale, YScale) action of the video class. The effect of this actio...
const S_Element element_act[]
MHEG5ErrorCode MHEG5setCursorPosition(MHEG5Root *target, MHEG5GList *params)
This action sets the cursor position to the values given as parameters. Implementation of the SetCurs...
MHEG5ErrorCode MHEG5setTransparency(MHEG5Root *target, MHEG5GList *params)
Change the value of the Transparency attribute. Implementation of the SetTransparency (NewTransparenc...
struct sMHEG5Link * nextActiveLink
MHEG5ErrorCode MHEG5getTokenPosition(MHEG5Root *target, MHEG5GList *params)
Set the Variable referenced by TokenPositionVar to the value of the TokenPosition attribute...
MHEG5ErrorCode MHEG5putBefore(MHEG5Root *target, MHEG5GList *params)
Put a Visible exactly in front of another Visible in the display stack. Implementation of the PutBefo...
MHEG5Application * MHEG5getCurrentApplication(void)
<Function description>="">
Header file - Function prototypes for operating system.