示例#1
0
static int
force_activate(ipmi_con_t           *conn,
	       int                  active,
	       ipmi_ll_ipmb_addr_cb handler,
	       void                 *cb_data)
{
    ipmi_ipmb_addr_t ipmb;
    ipmi_msg_t       msg;
    unsigned char    data[1];
    int              rv = EINVAL;

    if (active) {
	/* Deactivate any existing BMCs. */
	ipmi_msgi_t      *rspi;

	rspi = ipmi_alloc_msg_item();
	if (!rspi)
	    return ENOMEM;

	ipmb.addr_type = IPMI_IPMB_ADDR_TYPE;
	ipmb.channel = 0;
	ipmb.lun = 0;
	ipmb.slave_addr = 0x20;

	msg.netfn = 0x30;
	msg.cmd = 3;
	data[0] = 1;
	msg.data = data;
	msg.data_len = 1;

	rspi->data1 = handler;
	rspi->data2 = cb_data;
	rspi->data3 = (void *) (long) active;
	rv = conn->send_command(conn, (ipmi_addr_t *) &ipmb, sizeof(ipmb),
				&msg,
				deactivated, rspi);
	if (rv)
	    ipmi_free_msg_item(rspi);
	return rv;
    }

    if (rv)
	rv = send_activate(conn, active, handler, cb_data);

    return rv;
}
示例#2
0
static int
deactivated(ipmi_con_t *ipmi, ipmi_msgi_t  *rspi)
{
    ipmi_ll_ipmb_addr_cb handler = rspi->data1;
    void                 *cb_data = rspi->data2;
    int                  active = (long) rspi->data3;
    int                  rv;
    unsigned char        dummy;

    /* Don't care about errors from the deactivate, if no BMC was
       present then it doesn't really matter. */

    rv = send_activate(ipmi, active, handler, cb_data);
    if (rv)
	handler(ipmi, rv, &dummy, 0, 0, 0, cb_data);
    return IPMI_MSG_ITEM_NOT_USED;
}
示例#3
0
void InputMethod::activate(TextInput *textInput)
{
    if (!m_resource) {
        qDebug("Cannot activate (no input method running).");
        return;
    }

    if (m_textInput) {
        Q_ASSERT(m_textInput != textInput);
        m_textInput->deactivate(this);
    }
    m_textInput = textInput;
    m_context = new InputMethodContext(m_resource->client(), textInput);

    send_activate(m_resource->handle, m_context->resource()->handle);

    m_compositor->inputPanel()->setFocus(textInput->focus());
    m_compositor->inputPanel()->setCursorRectangle(textInput->cursorRectangle());
    m_compositor->inputPanel()->setInputPanelVisible(textInput->inputPanelVisible());
}