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; }
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; }
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()); }