* out if the HEAD section of the HTML
* out of the HEAD section of the HTML
lo_ProcessObjectTag(MWContext* context, lo_DocState* state, PA_Tag* tag, XP_Bool blocked){	lo_TopState* top_state = state->top_state;	lo_ObjectStack* top = top_state->object_stack;	LO_ObjectStruct* object = top ? top->object : NULL;	if (tag->is_end == FALSE)	{		lo_ObjectStack* new_top;		/*		 * If we have started loading an OBJECT we are		 * out if the HEAD section of the HTML		 * and into the BODY		 */		if (blocked == FALSE)		{			state->top_state->in_head = FALSE;			state->top_state->in_body = TRUE;		}		/*		 * Push a new entry onto the stack.  If blocked,		 * also stash it in the tag's lo_data so we can		 * reuse it later when not blocked.		 */		new_top = lo_PushObject(context, state, tag);		if (blocked)		{			XP_ASSERT(tag->lo_data == NULL);			tag->lo_data = (void*) new_top;		}				/*		 * If we're not blocked, and not in the middle of a handled		 * object, go process this object tag. Otherwise ignore the		 * the tag (we don't just filter it out in lo_FilterTag		 * because we need to keep track of the object nesting to		 * match up with the right </OBJECT>).		 */		if (blocked == FALSE)		{			if (object == NULL || object->lo_element.lo_plugin.type == LO_UNKNOWN)			{				lo_FormatObject(context, state, tag);				/*				 * If we've already read the PARAMs, we can try deal				 * with the blockage now (in fact, we must).  If we				 * haven't read the params yet, we have to wait until				 * our matching </OBJECT> tag (this will be handled				 * by the code below).				 */				if (new_top->read_params)					lo_CheckObjectBlockage(context, state, new_top);			}		}	}	else	{		if (top != NULL)		{			if (blocked)			{				/*			     * Set a flag indicating that we've already read			     * this object's params while blocked so we won't			     * have to do it again later when unblocked.			     */				top->read_params = TRUE;								if (lo_CheckObjectBlockage(context, state, top))				{					/*					 * If we're blocked on this object, don't pop the					 * stack. When the blockage is cleared we want to					 * still be at the top of the stack, because layout					 * will proceed immediately after the block point, 					 * which was our opening <OBJECT> tag.					 */				}				else				{					/*					 * If blocked on some other (enclosing) object,					 * pop the stack.					 */					lo_PopObject(state);				}			}			else			{				/*				 * If not blocked, just close out the object				 * as appropriate.				 */				 if (object != NULL && top->formatted_object == FALSE)				 {					if (object->lo_element.lo_plugin.type == LO_EMBED)					{						lo_FormatEmbedObject(context,                           state,                           top->clone_tag,                           (LO_EmbedStruct*) object,                           FALSE, /* Stream not started */#ifdef OJI                           top->parameters.n,                           top->parameters.names,                           top->parameters.values);             top->formatted_object = TRUE;             LO_NVList_Init( &top->parameters );#else                           top->param_count,                           top->param_names,                           top->param_values);						top->formatted_object = TRUE;						top->param_count = 0;						top->param_names = NULL;						top->param_values = NULL;#endif /* OJI */					}					else if (object->lo_element.type == LO_BUILTIN)					{						lo_FormatBuiltinObject(context,                                                                       state,                                                                       top->clone_tag,                                                                       (LO_BuiltinStruct*) object,                                                                       FALSE, /* Stream not started */#ifdef OJI                                                                       top->parameters.n,                                                                       top->parameters.names,                                                                       top->parameters.values);						top->formatted_object = TRUE;                                                LO_NVList_Init( &top->parameters );#else                                                                       top->param_count,                                                                       top->param_names,                                                                       top->param_values);						top->formatted_object = TRUE;						top->param_count = 0;						top->param_names = NULL;						top->param_values = NULL;#endif /* OJI */					}#ifdef JAVA					else if (object->lo_element.lo_plugin.type == LO_JAVA)					{						lo_CloseJavaApp(context, state, (LO_JavaAppStruct*) object);					}#endif				 }				/* Pop stack entry */				lo_PopObject(state);			}		}	}}