================= Com_EventLoop Returns last event time ================= */
| 832 | ================= |
| 833 | */ |
| 834 | int Com_EventLoop( void ) { |
| 835 | sysEvent_t ev; |
| 836 | netadr_t evFrom; |
| 837 | byte bufData[MAX_MSGLEN]; |
| 838 | msg_t buf; |
| 839 | |
| 840 | MSG_Init( &buf, bufData, sizeof( bufData ) ); |
| 841 | |
| 842 | while ( 1 ) { |
| 843 | ev = Com_GetEvent(); |
| 844 | |
| 845 | // if no more events are available |
| 846 | if ( ev.evType == SE_NONE ) { |
| 847 | // manually send packet events for the loopback channel |
| 848 | while ( NET_GetLoopPacket( NS_CLIENT, &evFrom, &buf ) ) { |
| 849 | CL_PacketEvent( evFrom, &buf ); |
| 850 | } |
| 851 | |
| 852 | while ( NET_GetLoopPacket( NS_SERVER, &evFrom, &buf ) ) { |
| 853 | // if the server just shut down, flush the events |
| 854 | if ( com_sv_running->integer ) { |
| 855 | Com_RunAndTimeServerPacket( &evFrom, &buf ); |
| 856 | } |
| 857 | } |
| 858 | |
| 859 | return ev.evTime; |
| 860 | } |
| 861 | |
| 862 | |
| 863 | switch ( ev.evType ) { |
| 864 | default: |
| 865 | Com_Error( ERR_FATAL, "Com_EventLoop: bad event type %i", ev.evType ); |
| 866 | break; |
| 867 | case SE_NONE: |
| 868 | break; |
| 869 | case SE_KEY: |
| 870 | CL_KeyEvent( ev.evValue, (qboolean)ev.evValue2, ev.evTime ); |
| 871 | break; |
| 872 | case SE_CHAR: |
| 873 | CL_CharEvent( ev.evValue ); |
| 874 | break; |
| 875 | case SE_MOUSE: |
| 876 | CL_MouseEvent( ev.evValue, ev.evValue2, ev.evTime ); |
| 877 | break; |
| 878 | case SE_JOYSTICK_AXIS: |
| 879 | CL_JoystickEvent( ev.evValue, ev.evValue2, ev.evTime ); |
| 880 | break; |
| 881 | case SE_CONSOLE: |
| 882 | Cbuf_AddText( (char *)ev.evPtr ); |
| 883 | Cbuf_AddText( "\n" ); |
| 884 | break; |
| 885 | } |
| 886 | |
| 887 | // free any block data |
| 888 | if ( ev.evPtr ) { |
| 889 | Z_Free( ev.evPtr ); |
| 890 | } |
| 891 | } |
no test coverage detected