]> git.saurik.com Git - wxWidgets.git/commitdiff
Cured memory leak report in wxDateTime; wxGLCanvas corrections
authorJulian Smart <julian@anthemion.co.uk>
Sun, 30 Jan 2000 13:43:37 +0000 (13:43 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sun, 30 Jan 2000 13:43:37 +0000 (13:43 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

distrib/msw/tmake/bcc.t
docs/html/faqmsw.htm
docs/latex/wx/image.tex
include/wx/datetime.h
src/common/datetime.cpp
src/common/filesys.cpp
src/msw/dcprint.cpp
src/msw/dir.cpp
src/msw/makefile.bcc
src/msw/window.cpp
utils/glcanvas/win/glcanvas.cpp

index 87cd6361265765e28b93bd5282d5793c6eee1a3c..f72497fc81b8d40828d06d6ec0ddf915f0a7ccb3 100644 (file)
@@ -144,7 +144,7 @@ wx:    $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET)
 
 $(LIBTARGET): $(DUMMY).obj $(OBJECTS) $(PERIPH_LIBS)
        erase $(LIBTARGET)
-       tlib $(LIBTARGET) /P1024 @&&!
+       tlib $(LIBTARGET) /P2048 @&&!
 +$(COMMONOBJS:.obj =.obj +)\
 +$(GENERICOBJS:.obj =.obj +)\
 +$(MSWOBJS:.obj =.obj +)\
index 085980f7b77e0f59762af4fd93cf659e5f957bf9..e5a7e960191af3892eb7ce4c29a6f7027c32032e 100644 (file)
@@ -240,6 +240,34 @@ generated. At least it will divide the number of files in samples
 directory by 10 (and the number of files to be maintained too).
 </blockquote>
 
+<P>
+
+<H3>How do you use VC++'s memory leak checking instead of that in wxWindows?</H3>
+
+Vadim Zeitlin:
+
+<pre>
+On the VC++ level, it's just the matter of calling _CrtSetDbgFlag() in the very
+beginning of the program. In wxWindows, this is done automatically when
+compiling with VC++ in debug mode unless wxUSE_GLOBAL_MEMORY_OPERATORS or
+__NO_VC_CRTDBG__ are defined - this check is done in wx/msw/msvcrt.h which
+is included from app.cpp which then calls wxCrtSetDbgFlag() without any
+#ifdefs.
+
+This works quite well: at the end of the program, all leaked blocks with their
+malloc count are shown. This number (malloc count) can be used to determine
+where exactly the object was allocated: for this it's enough to set the variable
+_crtBreakAlloc (look in VC98\crt\srs\dbgheap.c line 326) to this number and
+a breakpoint will be triggered when the block with this number is allocated.
+
+For simple situations it works like a charm. For something more complicated
+like reading uninitialized memory a specialized tool is probably better...
+
+Regards,
+VZ
+</pre>
+
+
 </font>
 
 </BODY>
index b77ec8f799e0b30f194088a7b9e30584d8f8ca83..ca43c0fbcc188d637c8adf4c02487ecf55a3f9cf 100644 (file)
@@ -49,7 +49,7 @@ PNM format, {\bf wxPNMHandler} will always save as raw RGB.
 
 \wxheading{See also}
 
-\helpref{wxBitmap}{wxbitmap}
+\helpref{wxBitmap}{wxbitmap}
 \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
index d7f994b9151f133be92b3419a57ccc61c5ad7145..1d7a329e67b95ba547000cc493e9d5afa804663f 100644 (file)
@@ -1259,8 +1259,10 @@ WX_DECLARE_OBJARRAY(wxDateTime, wxDateTimeArray);
 class WXDLLEXPORT wxDateTimeHolidayAuthority;
 WX_DEFINE_EXPORTED_ARRAY(wxDateTimeHolidayAuthority *, wxHolidayAuthoritiesArray);
 
+class wxDateTimeHolidaysModule;
 class WXDLLEXPORT wxDateTimeHolidayAuthority
 {
+    friend wxDateTimeHolidaysModule;
 public:
     // returns TRUE if the given date is a holiday
     static bool IsHoliday(const wxDateTime& dt);
index b24efdb41f5e46504b1a12206994fb90addcfc00..04fac9daaf512a348d180a1345e8a7d02e599566 100644 (file)
@@ -122,6 +122,7 @@ public:
     virtual void OnExit()
     {
         wxDateTimeHolidayAuthority::ClearAllAuthorities();
+        wxDateTimeHolidayAuthority::ms_authorities.Clear();
     }
 
 private:
index ebefb2ef975aae05234b55210e09636b376318f3..1f9cbc486f57786c9c8c5e9f54681bda573c05a5 100644 (file)
@@ -230,7 +230,7 @@ static wxString MakeCorrectPath(const wxString& path)
     
     cnt = p.Length();
     for (i = 0; i < cnt; i++)
-      if (p.GetChar(i) == wxT('\\')); p.GetWritableChar(i) = wxT('/'); // wanna be windows-safe
+      if (p.GetChar(i) == wxT('\\')) p.GetWritableChar(i) = wxT('/'); // Want to be windows-safe
         
     if (p.Left(2) == wxT("./")) { p = p.Mid(2); cnt -= 2; }
     
@@ -382,7 +382,7 @@ wxString wxFileSystem::FindFirst(const wxString& spec, int flags)
     m_FindFileHandler = NULL;
 
     for (int i = spec2.Length()-1; i >= 0; i--)
-        if (spec2[(unsigned int) i] == wxT('\\')) spec2.GetWritableChar(i) = wxT('/'); // wanna be windows-safe
+        if (spec2[(unsigned int) i] == wxT('\\')) spec2.GetWritableChar(i) = wxT('/'); // Want to be windows-safe
 
     node = m_Handlers.GetFirst();
     while (node)
index 1fabf5e6df8690aeb30721b063ee5c9c0575acda..c39d15dc3f33f3c7323c5f677a0d405a97ec8d07 100644 (file)
@@ -415,6 +415,11 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
 // wxPrinterDC bit blitting/bitmap drawing
 // ----------------------------------------------------------------------------
 
+// Win16 doesn't define GDI_ERROR.
+#ifndef GDI_ERROR
+#define GDI_ERROR -1
+#endif
+
 void wxPrinterDC::DoDrawBitmap(const wxBitmap &bmp,
                                wxCoord x, wxCoord y,
                                bool useMask)
index 5fe20263aafae57965ea216e6f306a9d08aece77..adfa2dd7e31284b383d42e536a6033e79bb1b7e3 100644 (file)
     #pragma hdrstop
 #endif
 
+// For _A_SUBDIR, etc.
+#if defined(__BORLANDC__) && defined(__WIN16__)
+#include <dos.h>
+#endif
+
 #ifndef WX_PRECOMP
     #include "wx/intl.h"
     #include "wx/log.h"
index c8aa1c79f8fa868b28226d4657efc487a6157d34..2bd4d53af25597a7e6b4776cd68850ea55817136 100644 (file)
@@ -273,7 +273,7 @@ wx:    $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET)
 
 $(LIBTARGET): $(DUMMY).obj $(OBJECTS) $(PERIPH_LIBS)
        erase $(LIBTARGET)
-       tlib $(LIBTARGET) /P1024 @&&!
+       tlib $(LIBTARGET) /P2048 @&&!
 +$(COMMONOBJS:.obj =.obj +)\
 +$(GENERICOBJS:.obj =.obj +)\
 +$(MSWOBJS:.obj =.obj +)\
index 11f6526ba664e63bf0d5e1b12cae16110ad2570f..7fd94251019f6cde0abe27688cdc8a8378068092 100644 (file)
@@ -2283,12 +2283,16 @@ bool wxWindow::MSWCreate(int id,
     if ( width > -1 ) width1 = width;
     if ( height > -1 ) height1 = height;
 
+    // Unfortunately this won't work in WIN16. Unless perhaps
+    // we define WS_EX_CONTROLPARENT ourselves?
+#ifndef __WIN16__
     // if we have wxTAB_TRAVERSAL style, we want WS_EX_CONTROLPARENT or
     // IsDialogMessage() won't work for us
     if ( GetWindowStyleFlag() & wxTAB_TRAVERSAL )
     {
         extendedStyle |= WS_EX_CONTROLPARENT;
     }
+#endif
 
     HWND hParent = (HWND)NULL;
     if ( parent )
index bbd7d026b9c3d4e21a770200968773967cfde24d..28defce46d2aa8613131e85f7c1babb1ac0b5473 100644 (file)
@@ -129,14 +129,25 @@ END_EVENT_TABLE()
 wxGLCanvas::wxGLCanvas(wxWindow *parent, wxWindowID id,
     const wxPoint& pos, const wxSize& size, long style, const wxString& name,
     int *attribList /* not used yet! */, const wxPalette& palette):
-  wxScrolledWindow(parent, id, pos, size, style, name)
+  wxScrolledWindow()
 {
-  m_hDC = (WXHDC) ::GetDC((HWND) GetHWND());
+    m_glContext = (wxGLContext*) NULL;
 
-  SetupPixelFormat();
-  SetupPalette(palette);
+    bool ret = Create(parent, id, pos, size, style, name);
+
+    if ( ret )
+    {
+        SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
+        SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
+    }
+
+    m_hDC = (WXHDC) ::GetDC((HWND) GetHWND());
+
+    SetupPixelFormat();
+    SetupPalette(palette);
+
+    m_glContext = new wxGLContext(TRUE, this, palette);
 
-  m_glContext = new wxGLContext(TRUE, this, palette);
 }
 
 wxGLCanvas::wxGLCanvas( wxWindow *parent,
@@ -144,8 +155,9 @@ wxGLCanvas::wxGLCanvas( wxWindow *parent,
               const wxPoint& pos, const wxSize& size, long style, const wxString& name,
               int *attribList, const wxPalette& palette )
   : wxScrolledWindow()
-//  : wxScrolledWindow(parent, id, pos, size, style, name)
 {
+    m_glContext = (wxGLContext*) NULL;
+
     bool ret = Create(parent, id, pos, size, style, name);
 
     if ( ret )