Exemplo n.º 1
0
/*
========================
idMenuScreen::HandleMenu

NOTE: This is holdover from the way the menu system was setup before.  It should be able to
be removed when the old way is fully replaced, and instead events will just be sent directly
to the screen.
========================
*/
void idMenuScreen::HandleMenu( const mainMenuTransition_t type )
{
	if( type == MENU_TRANSITION_ADVANCE )
	{
		ReceiveEvent( idWidgetEvent( WIDGET_EVENT_PRESS, 0, NULL, idSWFParmList() ) );
	}
	else if( type == MENU_TRANSITION_BACK )
	{
		ReceiveEvent( idWidgetEvent( WIDGET_EVENT_BACK, 0, NULL, idSWFParmList() ) );
	}
	
	transition = type;
}
Exemplo n.º 2
0
void InputDevice::IrqRingUpdate() {
    auto free_chain = [this](vring_used_elem* used_elem) {
        uint16_t id = static_cast<uint16_t>(used_elem->id & 0xffff);
        vring_desc* desc = vring_.DescFromIndex(id);
        ZX_ASSERT(id < kEventCount);
        ZX_ASSERT(desc->len == sizeof(virtio_input_event_t));

        auto evt = static_cast<virtio_input_event_t*>(io_buffer_virt(&buffers_[id]));
        ReceiveEvent(evt);

        ZX_ASSERT((desc->flags & VRING_DESC_F_NEXT) == 0);
        vring_.FreeDesc(id);
    };

    vring_.IrqRingUpdate(free_chain);

    vring_desc* desc = nullptr;
    uint16_t id;
    bool need_kick = false;
    while ((desc = vring_.AllocDescChain(1, &id))) {
        desc->len = sizeof(virtio_input_event_t);
        vring_.SubmitChain(id);
        need_kick = true;
    }

    if (need_kick) {
        vring_.Kick();
    }
}
Exemplo n.º 3
0
/*
========================
idMenuScreen::ObserveEvent
========================
*/
void idMenuScreen::ObserveEvent( const idMenuWidget& widget, const idWidgetEvent& event )
{
	if( event.type == WIDGET_EVENT_COMMAND )
	{
		switch( event.arg )
		{
			case idMenuWidget_CommandBar::BUTTON_JOY1:
			{
				ReceiveEvent( idWidgetEvent( WIDGET_EVENT_PRESS, 0, event.thisObject, event.parms ) );
				break;
			}
			case idMenuWidget_CommandBar::BUTTON_JOY2:
			{
				ReceiveEvent( idWidgetEvent( WIDGET_EVENT_BACK, 0, event.thisObject, event.parms ) );
				break;
			}
		}
	}
}
Exemplo n.º 4
0
static int cgimain( struct Weixin4cEnv *penv )
{
	char		*signature = NULL ;
	char		*timestamp = NULL ;
	char		*nonce = NULL ;
	char		*echostr = NULL ;
	
	char		*post_data = NULL ;
	int		post_data_len ;
	xml		req ;
	
	int		nret = 0 ;
	
	PUBSendContentTypeHtml();
	
	PUBDupUrlParam( "signature" , & signature );
	PUBDupUrlParam( "timestamp" , & timestamp );
	PUBDupUrlParam( "nonce" , & nonce );
	PUBDupUrlParam( "echostr" , & echostr );
	
	if( signature && timestamp && nonce && echostr )
	{
		SetLogFile( "%s/log/%s_VerifyServer.log" , penv->pconf->home , penv->pconf->project_name );
		nret = VerifyServer( penv , signature , timestamp , nonce , echostr ) ;
		SetLogFile( "%s/log/%s_weixin4c.log" , penv->pconf->home , penv->pconf->project_name );
		if( nret )
		{
			ErrorLog( __FILE__ , __LINE__ , "VerifyServer failed[%d]" , nret );
		}
		else
		{
			InfoLog( __FILE__ , __LINE__ , "VerifyServer ok" );
		}
	}
	else
	{
		nret = PUBReadPostBuffer() ;
		if( nret )
		{
			ErrorLog( __FILE__ , __LINE__ , "PUBReadPostBuffer failed[%d]" , nret );
		}
		else
		{
			InfoLog( __FILE__ , __LINE__ , "PUBReadPostBuffer ok" );
			
			post_data = PUBGetPostBufferPtr() ;
			post_data_len = PUBGetPostBufferLength() ;
			
			memset( & req , 0x00 , sizeof(xml) );
			nret = DSCDESERIALIZE_XML_xml( NULL , post_data , & post_data_len , & req ) ;
			if( nret )
			{
				ErrorLog( __FILE__ , __LINE__ , "DSCDESERIALIZE_XML_xml_MsgType failed[%d] , xml[%s]" , nret , post_data );
			}
			else
			{
				InfoLog( __FILE__ , __LINE__ , "DSCDESERIALIZE_XML_xml_MsgType ok , xml[%s]" , post_data );
				
				InfoLog( __FILE__ , __LINE__ , "req.MsgType[%s]" , req.MsgType );
				if( strcmp( req.MsgType , "<![CDATA[event]]>" ) == 0 )
				{
					nret = ReceiveEvent( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveEvent failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveEvent ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[text]]>" ) == 0 )
				{
					nret = ReceiveText( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveText failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveText ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[image]]>" ) == 0 )
				{
					nret = ReceiveImage( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveImage failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveImage ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[voice]]>" ) == 0 )
				{
					nret = ReceiveVoice( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveVoice failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveVoice ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[video]]>" ) == 0 )
				{
					nret = ReceiveVideo( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveVideo failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveVideo ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[shortvideo]]>" ) == 0 )
				{
					nret = ReceiveShortVideo( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveShortVideo failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveShortVideo ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[location]]>" ) == 0 )
				{
					nret = ReceiveLocation( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveLocation failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveLocation ok" );
					}
				}
				else if( strcmp( req.MsgType , "<![CDATA[link]]>" ) == 0 )
				{
					nret = ReceiveLink( penv , post_data , post_data_len , & req ) ;
					if( nret )
					{
						ErrorLog( __FILE__ , __LINE__ , "ReceiveLink failed[%d]" , nret );
					}
					else
					{
						InfoLog( __FILE__ , __LINE__ , "ReceiveLink ok" );
					}
				}
				else
				{
					ErrorLog( __FILE__ , __LINE__ , "xml.MsgType[%s] invalid" , req.MsgType );
				}
			}
		}
	}
	
	if( signature )
		free( signature );
	if( timestamp )
		free( timestamp );
	if( nonce )
		free( nonce );
	if( echostr )
		free( echostr );
	
	return nret;
}