fix infinite loop
[org.ibex.core.git] / src / org / ibex / plat / Win32.cc
index fda911b..8e0caae 100644 (file)
@@ -1,4 +1,7 @@
-// Copyright 2002 Adam Megacz, see the COPYING file for licensing [LGPL]
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the GNU General Public License version 2 ("the License").
+// You may not use this file except in compliance with the License.
+
 #include "GCJ.cc"
 
 // we have to do this because the jpeg libraries use the symbol 'INT32'
@@ -147,7 +150,8 @@ static unsigned char hand_cursor_and[32 * 4] = {
 };
 
 void org::ibex::plat::Win32::natPreInit() {
-    if (org::ibex::util::Log::verbose) {
+  // Win32 throws stderr in the trash unless you designate your binary as a "console binary"
+  if (org::ibex::util::Log::logstream == java::lang::System::err) {
         AllocConsole();
         freopen("CONOUT$", "w+t", stderr);
     }
@@ -372,7 +376,7 @@ static jint scratch_h = 0;
 #define max(a,b) ((a)>(b)?(a):(b))
 #define min(a,b) ((a)<(b)?(a):(b))
 
-void org::ibex::plat::Win32$Win32PixelBuffer::drawPicture(org::ibex::Picture* source0,
+void org::ibex::plat::Win32$Win32PixelBuffer::drawPicture(org::ibex::graphics::Picture* source0,
                                                          jint dx, jint dy,
                                                          jint cx1, jint cy1, jint cx2, jint cy2,
                                                          jint rgb, jboolean alphaOnly) {
@@ -455,7 +459,7 @@ void org::ibex::plat::Win32$Win32PixelBuffer::fillRect(jint x, jint y, jint x2,
     DeleteObject(brush);
 }
 
-void org::ibex::plat::Win32$Win32Surface::blit(org::ibex::PixelBuffer* s, jint sx, jint sy, jint dx, jint dy, jint dx2, jint dy2) {
+void org::ibex::plat::Win32$Win32Surface::blit(org::ibex::graphics::PixelBuffer* s, jint sx, jint sy, jint dx, jint dy, jint dx2, jint dy2) {
     // we create the DC lazily to get around some strange race condition in WinXP
     if (hdc == 0) hdc = (jint)GetDC((HWND)hwnd);
     BitBlt((HDC)hdc, dx, dy, dx2 - dx, dy2 - dy, (HDC)(((org::ibex::plat::Win32$Win32PixelBuffer*)s)->hdc), sx, sy, SRCCOPY);
@@ -578,7 +582,7 @@ void org::ibex::plat::Win32$Win32Surface::setTitleBarText(java::lang::String* ti
     SetWindowText((HWND)hwnd, buf);
 }
 
-void org::ibex::plat::Win32$Win32Surface::setIcon(org::ibex::Picture* p0) {
+void org::ibex::plat::Win32$Win32Surface::setIcon(org::ibex::graphics::Picture* p0) {
 
     org::ibex::plat::Win32$Win32Picture* p = (org::ibex::plat::Win32$Win32Picture*)p0;
     int icon_width = GetSystemMetrics(SM_CXSMICON);
@@ -637,7 +641,9 @@ jint org::ibex::plat::Win32$Win32Surface::WndProc(jint _hwnd, jint _iMsg, jint _
     switch(iMsg) {
     case WM_DEVMODECHANGE: break;    // FEATURE: color depth changed
     case WM_DISPLAYCHANGE: break;    // FEATURE: screen size changed
-    case WM_MOUSEWHEEL: break;       // FEATURE: Mouse Wheel
+    case WM_MOUSEWHEEL:
+      VScroll(((jfloat)((wParam & 0xffff0000) >> 16)) / (jfloat)120);
+      break;
 
     case WM_SYSKEYDOWN: if (GetKeyState(VK_MENU) >> (sizeof(SHORT) * 8 - 1) == 0) return 0;
     case WM_KEYDOWN: