+* 1.5.38
+- modified process of using virtio keyboard queue and added key release event when context menu is activated
+== Sungmin Ha <sungmin82.ha@samsung.com> 2013-05-14
+* 1.5.37
+- remove Open_Source_Announcement.txt file
+== jihye kim <jihye1128.kim@samsung.com> 2013-05-09
+
+* 1.5.36
+- call setBounds of display in arrangeSkin
+== GiWoong Kim <giwoong.kim@samsung.com> 2013-05-03
+* 1.5.35
+- dispose the framebuffer through syncExec
+== GiWoong Kim <giwoong.kim@samsung.com> 2013-05-02
+* 1.5.33
+- apply patch modified by Fengqian.Gao
+== Sungmin Ha <sungmin82.ha@samsung.com> 2013-04-29
* 1.5.32
- Fix the slideshow problem of gallery app.
== Sangjin Kim <sangjin3.kim@samsung.com> 2013-04-23
-Version: 1.5.32
+Version: 1.5.38
Maintainer: Yeong-Kyoon Lee<yeongkyoon.lee@samsung.com>
Source: emulator
if(surface->pixmap)
XFreePixmap( glo.dpy, surface->pixmap);
+
+ if(surface->glxPixmap)
+ glXDestroyPixmap( glo.dpy, surface->glxPixmap);
+
XDestroyWindow( glo.dpy, surface->window);
if(surface->image)
glo_surface_free_xshm_image(surface);
VirtIOKeyboard *vkbd = (VirtIOKeyboard *)vdev;
int index = 0;
- TRACE("virtqueue handler.\n");
if (virtio_queue_empty(vkbd->vq)) {
INFO("virtqueue is empty.\n");
return;
/* Get a queue buffer which is written by guest side. */
do {
index = virtqueue_pop(vq, &elem);
- TRACE("virtqueue pop. index: %d\n", index);
+ TRACE("virtqueue pop.\n");
} while (index < VIRTIO_KBD_QUEUE_SIZE);
}
return;
}
- TRACE("[Enter] virtqueue notifier. %d\n", written_cnt);
+ TRACE("[Enter] virtqueue notifier.\n");
if (!virtio_queue_ready(vkbd->vq)) {
INFO("virtqueue is not ready.\n");
while ((written_cnt--)) {
kbdevt = &vkbd->kbdqueue.kbdevent[vkbd->kbdqueue.rptr];
-
- while (((EmulKbdEvent*)(elem.in_sg[index].iov_base))->code != 0) {
- if (++index == VIRTIO_KBD_QUEUE_SIZE) {
- index--;
- TRACE("virtio queue is full.\n");
- break;
- }
- }
+ if (((EmulKbdEvent*)(elem.in_sg[vkbd->kbdqueue.rptr].iov_base))->code != 0) {
+ TRACE("FIXME: virtio queue is full.\n");
+ }
/* Copy keyboard data into guest side. */
TRACE("copy: keycode %d, type %d, elem_index %d\n",
- kbdevt->code, kbdevt->type, index);
- memcpy(elem.in_sg[index++].iov_base, kbdevt, sizeof(EmulKbdEvent));
+ kbdevt->code, kbdevt->type, vkbd->kbdqueue.rptr);
+ memcpy(elem.in_sg[vkbd->kbdqueue.rptr].iov_base, kbdevt, sizeof(EmulKbdEvent));
memset(kbdevt, 0x00, sizeof(EmulKbdEvent));
if (vkbd->kbdqueue.wptr > 0) {
vkbd->kbdqueue.rptr++;
if (vkbd->kbdqueue.rptr == VIRTIO_KBD_QUEUE_SIZE) {
vkbd->kbdqueue.rptr = 0;
- TRACE("kbdqueue is full.\n");
}
}
qemu_mutex_unlock(&vkbd->event_mutex);
imageData.setPixels(0, 0, sizeFramebuffer, arrayFramebuffer, 0);
- temp = framebuffer;
- framebuffer = new Image(display, imageData);
- temp.dispose();
+ display.syncExec(new Runnable() {
+ @Override
+ public void run() {
+ framebuffer.dispose();
+ framebuffer = new Image(display, imageData);
+ }
+ });
if (display.isDisposed() == false) {
/* redraw canvas */
@Override
public void menuDetected(MenuDetectEvent e) {
Menu menu = EmulatorSkin.this.contextMenu;
+ keyReleaseEvent();
if (menu != null && EmulatorSkin.this.isDragStartedInLCD == false) {
lcdCanvas.setMenu(menu);
@Override
public void focusLost(FocusEvent event) {
logger.info("lost focus");
-
- /* key event compensation */
- if (pressedKeyEventList.isEmpty() == false) {
- for (KeyEventData data : pressedKeyEventList) {
- KeyEventData keyEventData = new KeyEventData(
- KeyEventType.RELEASED.value(), data.keycode,
- data.stateMask, data.keyLocation);
- communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
-
- logger.info("auto release : keycode=" + keyEventData.keycode +
- ", stateMask=" + keyEventData.stateMask +
- ", keyLocation=" + keyEventData.keyLocation);
- }
- }
-
- pressedKeyEventList.clear();
+ keyReleaseEvent();
}
};
return currentState.getCurrentRotationId();
}
+ public void keyReleaseEvent() {
+ /* key event compensation */
+ if (pressedKeyEventList.isEmpty() == false) {
+ for (KeyEventData data : pressedKeyEventList) {
+ KeyEventData keyEventData = new KeyEventData(
+ KeyEventType.RELEASED.value(), data.keycode,
+ data.stateMask, data.keyLocation);
+ communicator.sendToQEMU(
+ SendCommand.SEND_KEY_EVENT, keyEventData, false);
+
+ logger.info("auto release : keycode=" + keyEventData.keycode +
+ ", stateMask=" + keyEventData.stateMask +
+ ", keyLocation=" + keyEventData.keyLocation);
+ }
+ }
+
+ pressedKeyEventList.clear();
+ }
}
logger = SkinLogger.getSkinLogger(EmulatorSkinMain.class).getLogger();
logger.info("!!! Start Emualtor Skin !!!");
+ logger.info("java.version: " + System.getProperty("java.version"));
+ logger.info("java vendor: " + System.getProperty("java.vendor"));
+ logger.info("vm version: " + System.getProperty("java.vm.version"));
+ logger.info("vm vendor: " + System.getProperty("java.vm.vendor"));
+ logger.info("vm name: " + System.getProperty("java.vm.name"));
+ logger.info("os name: " + System.getProperty("os.name"));
+ logger.info("os arch: " + System.getProperty("os.arch"));
+ logger.info("os version: " + System.getProperty("os.version"));
+
/* startup arguments parsing */
Map<String, String> argsMap = parsArgs(args);
logger.info("lcd bounds : " + lcdBounds);
currentState.setDisplayBounds(lcdBounds);
+ if (SwtUtil.isMacPlatform() == true) {
+ lcdCanvas.setBounds(currentState.getDisplayBounds());
+ }
/* arrange the skin image */
Image tempImage = null;
public void paintControl(final PaintEvent e) {
if (currentState.isNeedToUpdateDisplay() == true) {
currentState.setNeedToUpdateDisplay(false);
- lcdCanvas.setBounds(currentState.getDisplayBounds());
+ if (SwtUtil.isMacPlatform() == false) {
+ lcdCanvas.setBounds(currentState.getDisplayBounds());
+ }
if (skin.communicator.isSensorDaemonStarted() == true) {
/* Let's do one more update for sdl display surface