X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/29172908bf90ddd8b70c5195b870745b5af3b7a3..00dd3b1897bd74276234f449f68e3f0805eb77dc:/src/os2/dcmemory.cpp

diff --git a/src/os2/dcmemory.cpp b/src/os2/dcmemory.cpp
index 7977733bb7..5e2ed33694 100644
--- a/src/os2/dcmemory.cpp
+++ b/src/os2/dcmemory.cpp
@@ -146,12 +146,34 @@ void wxMemoryDC::SelectObject(
                  (rBitmap.GetSelectedInto() == this),
                  wxT("Bitmap is selected in another wxMemoryDC, delete the first wxMemoryDC or use SelectObject(NULL)") );
 
+    WXHBITMAP                       hBmp = rBitmap.GetHBITMAP();
+
+    if (!hBmp)
+    {
+        //
+        // Bmps drawn to are upside down, so flip it before committing
+        //
+        POINTL                      vPoint[4] = { 0, m_vSelectedBitmap.GetHeight(),
+                                                  m_vSelectedBitmap.GetWidth(), 0,
+                                                  0, 0, m_vSelectedBitmap.GetWidth(), m_vSelectedBitmap.GetHeight()
+                                                };
+
+
+        ::GpiBitBlt( m_hPS
+                    ,m_hPS
+                    ,4
+                    ,vPoint
+                    ,ROP_SRCCOPY
+                    ,BBO_IGNORE
+                   );
+        m_vSelectedBitmap.SetSelectedInto(NULL);
+    }
     m_vSelectedBitmap = rBitmap;
 
-    WXHBITMAP                       hBmp = rBitmap.GetHBITMAP();
 
     if (!hBmp)
     {
+
         m_hOldBitmap = (WXHBITMAP)::GpiSetBitmap(m_hPS, NULLHANDLE);
         return;
     }