void RenderPanel::sendMouseMoveEvent() { QPoint cursor_pos = QCursor::pos(); QPoint mouse_rel_widget = mapFromGlobal( cursor_pos ); if( rect().contains( mouse_rel_widget )) { bool mouse_over_this = false; QWidget *w = QApplication::widgetAt( cursor_pos ); while( w ) { if( w == this ) { mouse_over_this = true; break; } w = w->parentWidget(); } if( !mouse_over_this ) { return; } QMouseEvent fake_event( QEvent::MouseMove, mouse_rel_widget, Qt::NoButton, QApplication::mouseButtons(), QApplication::keyboardModifiers() ); onRenderWindowMouseEvents( &fake_event ); } }
/* * OSS/AWE driver specific h/w controls */ static void emuspec_control(struct snd_emux *emu, struct snd_emux_port *port, int cmd, unsigned char *event, int atomic, int hop) { int voice; unsigned short p1; short p2; int i; struct snd_midi_channel *chan; voice = event[3]; if (voice < 0 || voice >= port->chset.max_channels) chan = NULL; else chan = &port->chset.channels[voice]; p1 = *(unsigned short *) &event[4]; p2 = *(short *) &event[6]; switch (cmd) { #if 0 /* don't do this atomically */ case _EMUX_OSS_REMOVE_LAST_SAMPLES: snd_soundfont_remove_unlocked(emu->sflist); break; #endif case _EMUX_OSS_SEND_EFFECT: if (chan) snd_emux_send_effect_oss(port, chan, p1, p2); break; case _EMUX_OSS_TERMINATE_ALL: snd_emux_terminate_all(emu); break; case _EMUX_OSS_TERMINATE_CHANNEL: /*snd_emux_mute_channel(emu, chan);*/ break; case _EMUX_OSS_RESET_CHANNEL: /*snd_emux_channel_init(chset, chan);*/ break; case _EMUX_OSS_RELEASE_ALL: fake_event(emu, port, voice, MIDI_CTL_ALL_NOTES_OFF, 0, atomic, hop); break; case _EMUX_OSS_NOTEOFF_ALL: fake_event(emu, port, voice, MIDI_CTL_ALL_SOUNDS_OFF, 0, atomic, hop); break; case _EMUX_OSS_INITIAL_VOLUME: if (p2) { port->volume_atten = (short)p1; snd_emux_update_port(port, SNDRV_EMUX_UPDATE_VOLUME); } break; case _EMUX_OSS_CHN_PRESSURE: if (chan) { chan->midi_pressure = p1; snd_emux_update_channel(port, chan, SNDRV_EMUX_UPDATE_FMMOD|SNDRV_EMUX_UPDATE_FM2FRQ2); } break; case _EMUX_OSS_CHANNEL_MODE: reset_port_mode(port, p1); snd_emux_reset_port(port); break; case _EMUX_OSS_DRUM_CHANNELS: port->drum_flags = *(unsigned int*)&event[4]; for (i = 0; i < port->chset.max_channels; i++) { chan = &port->chset.channels[i]; chan->drum_channel = ((port->drum_flags >> i) & 1) ? 1 : 0; } break; case _EMUX_OSS_MISC_MODE: if (p1 < EMUX_MD_END) port->ctrls[p1] = p2; break; case _EMUX_OSS_DEBUG_MODE: break; default: if (emu->ops.oss_ioctl) emu->ops.oss_ioctl(emu, cmd, p1, p2); break; } }