Subset of my Berlios Patch 1908.
Notice the wxCHECK_VERSION(2, 6, 2) please verify your patch works with 2.6.1 or drop support for 2.6.1. Unless your patch does not use wxGetLocalTimeMillis. I just back ported the code from wxscintilla in my patch.
Note, I do NOT see why I added an test for 2, 6, 2 in my patch, will look and see if it is needed.
Note: BeginDrawing and EndDrawing do nothing in wxWidgets 2.6 and 2.8.
Tim S
Edit: I see now why I have an test for wxWidgets 2.6.2, the error below is from 2.6.1.
In member function `double ElapsedTime::Duration(bool)':
codeblocks\src\sdk\wxscintilla\src\PlatWX.cpp:1398: error: 'class wxLongLong' has no member named 'ToDouble'
Index: src/sdk/wxscintilla/src/PlatWX.cpp
===================================================================
--- src/sdk/wxscintilla/src/PlatWX.cpp (revision 4032)
+++ src/sdk/wxscintilla/src/PlatWX.cpp (working copy)
@@ -1382,11 +1382,28 @@
//----------------------------------------------------------------------
ElapsedTime::ElapsedTime() {
+#if !wxCHECK_VERSION(2, 6, 2)
wxStartTimer();
+#else
+ wxLongLong localTime = wxGetLocalTimeMillis();
+ littleBit = localTime.GetLo();
+ bigBit = localTime.GetHi();
+#endif
}
double ElapsedTime::Duration(bool reset) {
+#if !wxCHECK_VERSION(2, 6, 2)
double result = wxGetElapsedTime(reset);
+#else
+ wxLongLong prevTime(bigBit, littleBit);
+ wxLongLong localTime = wxGetLocalTimeMillis();
+ if(reset) {
+ littleBit = localTime.GetLo();
+ bigBit = localTime.GetHi();
+ }
+ wxLongLong duration = localTime - prevTime;
+ double result = duration.ToDouble();
+#endif
result /= 1000.0;
return result;
}
Index: src/sdk/wxscintilla/src/ScintillaWX.cpp
===================================================================
--- src/sdk/wxscintilla/src/ScintillaWX.cpp (revision 4032)
+++ src/sdk/wxscintilla/src/ScintillaWX.cpp (working copy)
@@ -684,7 +684,6 @@
PRectangle rcClient = GetClientRectangle();
paintingAllText = rcPaint.Contains(rcClient);
- dc->BeginDrawing();
ClipChildren(*dc, rcPaint);
Paint(surfaceWindow, rcPaint);
@@ -695,7 +694,6 @@
FullPaint();
}
paintState = notPainting;
- dc->EndDrawing();
}
From CVS wxCode/components/wxscintilla at current date.
//----------------------------------------------------------------------
ElapsedTime::ElapsedTime() {
wxLongLong localTime = wxGetLocalTimeMillis();
littleBit = localTime.GetLo();
bigBit = localTime.GetHi();
}
double ElapsedTime::Duration(bool reset) {
wxLongLong prevTime(bigBit, littleBit);
wxLongLong localTime = wxGetLocalTimeMillis();
if(reset) {
littleBit = localTime.GetLo();
bigBit = localTime.GetHi();
}
wxLongLong duration = localTime - prevTime;
double result = duration.ToDouble();
result /= 1000.0;
return result;
}
//----------------------------------------------------------------------