home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tvos200.zip / CHANGES.LOG next >
Text File  |  1995-04-25  |  6KB  |  121 lines

  1. ; -----------------------------------------------------------------------------
  2. * Initial changes.
  3. Source cleanup to allow compile of 90% on WatCOM.
  4. Modules not compiling are: hardwrvr, tevent, tscreen and tmouse.
  5. All header files (formerly in <compiler-dir>\INCLUDE\TVISION moved to the
  6. project directory for TVISION.
  7.  
  8. ; -----------------------------------------------------------------------------
  9. * Modifying platform handling.
  10. Removing all platform-specific references for screen, mouse etc handling to
  11. the tHardwareInfo class; providing implementations for that class in separate
  12. files:
  13.     hardwrvr.cpp:   Shared code & code with minimal platform changes,
  14.     hardos2.cpp:    OS/2 32-bits platform-specific stuff
  15.     hardnt.cpp:     Windows NT platform-specific stuff
  16.     harddos.cpp:    DOS and Extended DOS platform-specific stuff.
  17.  
  18. To really make things nice would entail a complete rewrite of the low-level
  19. stuff, i.e. THWMouse, TMouse, TEvent, TEventQueue, THardwareInfo, TDisplay and
  20. TScreen should be redesigned because at this point they're a mess. This would
  21. probably break existing code, however, so that's not done. Also, the event
  22. retrieval process should change: instead of calls to getKeyEvent and getMouse...
  23. a single call to getEvent() should be used. This prevents the hassles with
  24. "pending events" and the like for NT and OS/2, and would allow blocking in the
  25. event loop to prevent 100% CPU load..
  26.  
  27.  
  28. ; -----------------------------------------------------------------------------
  29. * Adding the files OS2STUFF.CPP and .H.
  30. They contain helper functions for the OS/2 platform:
  31. - the keyboard interface with limited diacritical support
  32. - Current ms time function.
  33.  
  34. ; -----------------------------------------------------------------------------
  35. * Changed TSCREEN.CPP for platform code; added several #ifos2..
  36.  
  37. ; -----------------------------------------------------------------------------
  38. * tgroup.cpp: added C version of removeView()..
  39.  
  40. ; -----------------------------------------------------------------------------
  41. * Syserr.cpp: added C (OS/2) version of swapStatusLine()..
  42.  
  43. ; -----------------------------------------------------------------------------
  44. * ttypes.h:
  45.  
  46. Added #ifdef... lines around the definitions for Boolean and the types uint,
  47. uchar etc. for compatibility with other libraries.
  48.  
  49. Changed the definition for ccIndex from int to short: ccIndex is streamed out
  50. at some places, and int changes size from DOS to OS/2, causing streamed
  51. desktops etc to become unreadable.
  52.  
  53.  
  54. ; -----------------------------------------------------------------------------
  55. * *.asm:
  56.  
  57. Most assembler files are changed in the 32-bit part. The original used Borland
  58. mangled names for the entrypoints, but since each C++ compiler has it's own
  59. idea about mangling this was changed.
  60.  
  61. Now all 32-bits entrypoints are C functions that take a void* as the <this>
  62. pointer. All C functions are preceded by asm. So, TView::exposed() becomes the
  63. C function _asmExposed(void* this).
  64.  
  65. Some stupid functions are written as C functions; these are:
  66.     - swapst.asm
  67.     - tvcursor.asm
  68. they are replaced by C versions in syserr.cpp and tvos2.cpp.
  69.  
  70. Not all assembler files are used; some stuff has C++ versions in tvos2.cpp
  71. while I'm busy porting the assembler stuff in a more portable way..
  72.  
  73. ; -----------------------------------------------------------------------------
  74. * twindow.cpp: added ofFirstClick to the options of a TWindow.
  75.  
  76. when not present, this caused the following symptom: dragging a window that
  77. was not active when the mouse was clicked on it's title bar would fail; the
  78. window would be selected but wouldn't enter drag mode, because the call to
  79. the focus() procedure would clear the event. By setting ofFirstClick the
  80. event will persist so that it will be recognised as a 'drag' start.
  81.  
  82. ; -----------------------------------------------------------------------------
  83. * TVOS2.CPP: temporary workaround for some of the assembler modules.
  84.  
  85. This module contains some member functions that were present in the assember
  86. modules. Some of there were hard to port, so I've wrought a C++ version of
  87. them. I'm still busy porting the assembler parts in such a way that they can
  88. be used with >1 compiler. Main problem here is name mangling: the assembler
  89. modules all use Borland name mangling. Two problems exist:
  90.  
  91. 1. How to call member functions implemented in assembly without having so
  92. specify every compiler's mangled name in the assembler module?
  93.  
  94. My current workaround is: all 32-bits assembler functions are implemented as
  95. non-member functions, which get a 'this' pointer explicitly passed. In the
  96. class definition, the original member function calls the assembler version
  97. inline, so no extra overhead is caused.
  98.  
  99. 2.  How must member functions be called FROM an assembler module?
  100.  
  101. Some of the assembler modules (for instance the writeView members and derived)
  102. call non-assembler member functions. For instance the writeView member calls
  103. THardwareInfo::cursorOff(). This name is mangled also, and one solution would
  104. be to provide extern "C" functions that call the appropriate member function
  105. for us (since most (all?) of them are static anyway). But this would cause
  106. xtra overhead. I'm still thinking.
  107.  
  108. ; -----------------------------------------------------------------------------
  109. drivers.cpp, drawbuf.h: new cpyBytes member added.
  110.  
  111. cpyBytes() copies a length-determined string to the buffer, thereby
  112. setting the attribute to a constant value.
  113.  
  114. ; -----------------------------------------------------------------------------
  115. * tcollect.cpp: default constructor for TNSCollection now sets delta to 5.
  116.  
  117. The default constructor set the delta member to zero initially. This causes
  118. a problem when an element is inserted: it grows with 0 elements....
  119. An assertion was put where the array is grown to make sure delta is non-0.
  120.  
  121.