Example #1
0
	//有发送或是接收网络的成功事件,证明连接是正常的。
	void on_active(Socket *socket)
	{
        if(check_in(socket))
        {
            //将socket放到_online_queue队列的队尾
            socket->_last_active_time = time(0);
            _online_queue.erase(socket);
            _online_queue.push(socket);
        }
		dlog2("WARN: EventBaseSockMgr::on_active");
	}
Example #2
0
	//socket断开
	void on_closed(Socket *socket)
	{
		if (check_in(socket))
		{
			_sockets.erase(socket);
            _online_queue.erase(socket);
            _waiting_queue.push(socket);
		}

		dlog2("WARN: EventBaseSockMgr::on_closed");
	}
Example #3
0
	//tcpserver接收到新的连接
	void on_new_connection(Socket *socket)
	{
		socket->_last_active_time = time(0);
		if(!check_in(socket))
		{
            _sockets.insert(socket);
            _online_queue.push(socket);
		}

		dlog2("WARN: EventBaseSockMgr::on_new_connection");
	}
Example #4
0
	void on_connect_fail(Socket *socket)
	{
        dlog2("WARN: on_connect_fail");
		this->on_closed(socket);
	}
Example #5
0
void
vdp1_cmdt_sprite_draw(struct vdp1_cmdt *cmdt,
    const struct vdp1_cmdt_sprite *sprite)
{
        bool scale;
        uint16_t zp;

        switch (sprite->cs_type) {
        case CMDT_TYPE_NORMAL_SPRITE:
                cmdt->cmd_ctrl = 0x0000;

                cmdt->cmd_pmod = (sprite->cs_mode.raw & 0x9FFF) ^ 0x00C0;

                cmdt->cmd_xa = sprite->cs_position.x;
                cmdt->cmd_ya = sprite->cs_position.y;
                break;
        case CMDT_TYPE_SCALED_SPRITE:
                zp = sprite->cs_zoom_point.enable
                    ? dlog2(sprite->cs_zoom_point.raw & ~0x0010)
                    : 0x0000;

                cmdt->cmd_ctrl = (zp << 8) | 0x0001;
                cmdt->cmd_pmod = sprite->cs_mode.raw;

                scale = zp == 0x0000;
                if (scale) {
                        /* Scale with two vertices, A and C. No zoom point */
                        cmdt->cmd_xa = sprite->cs_vertex.a.x;
                        cmdt->cmd_ya = sprite->cs_vertex.a.y;
                        cmdt->cmd_xc = sprite->cs_vertex.c.x;
                        cmdt->cmd_yc = sprite->cs_vertex.c.y;
                } else {
                        cmdt->cmd_xa = sprite->cs_zoom.point.x;
                        cmdt->cmd_ya = sprite->cs_zoom.point.y;
                        cmdt->cmd_xb = sprite->cs_zoom.display.x;
                        cmdt->cmd_yb = sprite->cs_zoom.display.y;
                }
                break;
        case CMDT_TYPE_DISTORTED_SPRITE:
                cmdt->cmd_ctrl = 0x0002;
                cmdt->cmd_pmod = sprite->cs_mode.raw;

                /* CCW starting from vertex D */
                cmdt->cmd_xd = sprite->cs_vertex.d.x;
                cmdt->cmd_yd = sprite->cs_vertex.d.y;
                cmdt->cmd_xa = sprite->cs_vertex.a.x;
                cmdt->cmd_ya = sprite->cs_vertex.a.y;
                cmdt->cmd_xb = sprite->cs_vertex.b.x;
                cmdt->cmd_yb = sprite->cs_vertex.b.y;
                cmdt->cmd_xc = sprite->cs_vertex.c.x;
                cmdt->cmd_yc = sprite->cs_vertex.c.y;
                break;
        }

        cmdt->cmd_link = 0x0000;

        switch (sprite->cs_mode.color_mode) {
        case 0:
                cmdt->cmd_colr = sprite->cs_color_bank.raw & 0xFFF0;
                break;
        case 1:
                cmdt->cmd_colr = (uint16_t)((sprite->cs_clut >> 3) & 0xFFFF);
                break;
        case 2:
                cmdt->cmd_colr = sprite->cs_color_bank.raw & 0xFFC0;
                break;
        case 3:
                cmdt->cmd_colr = sprite->cs_color_bank.raw & 0xFF80;
                break;
        case 4:
                cmdt->cmd_colr = sprite->cs_color_bank.raw & 0xFF00;
                break;
        case 5:
                break;
        }

        cmdt->cmd_srca = (sprite->cs_char >> 3) & 0xFFFF;
        cmdt->cmd_size = (((sprite->cs_width >> 3) << 8) |
            sprite->cs_height) & 0x3FFF;

        /* Gouraud shading processing is valid when a color calculation
         * mode is specified */
        cmdt->cmd_grda = (sprite->cs_grad >> 3) & 0xFFFF;
}