rob@76
|
1 April 9, 2013
|
rob@76
|
2 -------------
|
rob@76
|
3
|
rob@76
|
4 Changes for the 1.1.0 release (vs 1.0.2) are listed below. Unless
|
rob@76
|
5 otherwise indicated these changes have been made since
|
rob@76
|
6 January 2013. The focus has been on general clean-up, fixing bugs,
|
rob@76
|
7 compiler errors and warnings, and fixing issues on 64 bit platforms.
|
rob@76
|
8 A few improvements such as support for OSC arrays, functions
|
rob@76
|
9 for setting broadcast and reuse socket options have been added.
|
rob@76
|
10 This update merges changes from the openFrameworks version
|
rob@76
|
11 of oscpack.
|
rob@76
|
12
|
rob@76
|
13 - Added support for arrays in messages (see OscUnitTests.cpp
|
rob@76
|
14 for example usage). (patch thanks to Tim Blechmann)
|
rob@76
|
15
|
rob@76
|
16 - Fixed bugs relating to 64 bit usage (e.g. crashes in 64 bit
|
rob@76
|
17 builds on OS X).
|
rob@76
|
18
|
rob@76
|
19 - Some member functions that previously used the "int" or
|
rob@76
|
20 "unsigned long" type for parameters or return values now use
|
rob@76
|
21 std::size_t (platform-defined) or
|
rob@76
|
22 osc_bundle_element_size_t (a.k.a. int32).
|
rob@76
|
23 This change was made to better support 64 bit platforms.
|
rob@76
|
24 See SVN revision 70 for details.
|
rob@76
|
25
|
rob@76
|
26 - The previous point introduces a breaking change on Linux/x86_64
|
rob@76
|
27 for callers of AsBlob() and AsBlobUnchecked():
|
rob@76
|
28 The type of the second argument (the "size" argument) to
|
rob@76
|
29 ReceivedMessageArgument::AsBlob() and
|
rob@76
|
30 ReceivedMessageArgument::AsBlobUnchecked() has changed
|
rob@76
|
31 from unsigned long & to osc_bundle_element_size_t (an int32).
|
rob@76
|
32 You should declare your size argument variables as
|
rob@76
|
33 osc_bundle_element_size_t to avoid incompatibilities between
|
rob@76
|
34 32 and 64 bit builds.
|
rob@76
|
35
|
rob@76
|
36 - Note that oscpack does not support packets larger than
|
rob@76
|
37 0x7FFFFFFC (see comments in class ReceivedPacket for
|
rob@76
|
38 details).
|
rob@76
|
39
|
rob@76
|
40 - Oscpack defines an osc::Nil value used for sending the nil
|
rob@76
|
41 message argument value. This conflicts with Objective-C.
|
rob@76
|
42 Therefore osc::Nil is no longer defined in Obj-C++ code.
|
rob@76
|
43 There is now an osc::OscNil value, which should be preferred.
|
rob@76
|
44 osc::Nil is still available when writing C++.
|
rob@76
|
45 (fix thanks to openFrameworks)
|
rob@76
|
46
|
rob@76
|
47 - Added UdpSocket::SetEnableBroadcast(). This needs to
|
rob@76
|
48 be called to enable sending to the broadcast address on some
|
rob@76
|
49 platforms (e.g. Mac OS X). (thanks to openFrameworks)
|
rob@76
|
50
|
rob@76
|
51 - Added UdpSocket::SetAllowReuse(). This is useful for
|
rob@76
|
52 sharing sockets on some platforms (Mac?), and not so useful
|
rob@76
|
53 on other platforms. (thanks to openFrameworks)
|
rob@76
|
54
|
rob@76
|
55 - Added IpEndpointName::IsMulticastAddress() (2010)
|
rob@76
|
56
|
rob@76
|
57 - Cleaned up C++ header usage and std:: namespace usage
|
rob@76
|
58 to be more standards compliant (fixes issues on recent compilers
|
rob@76
|
59 such as clang and gcc4.6).
|
rob@76
|
60
|
rob@76
|
61 - Improved host endianness detection. Should auto-detect
|
rob@76
|
62 endianness on most platforms now.
|
rob@76
|
63 (thanks to Tim Blechmann for help with this)
|
rob@76
|
64
|
rob@76
|
65 - Fixed two memory leaks: (1) in OscPrintReceivedElements.cpp
|
rob@76
|
66 when printing time tag message arguments (thanks to Gwydion ap Dafydd).
|
rob@76
|
67 (2) in the posix SocketReceiveMultiplexer::Run() method if an exception
|
rob@76
|
68 was thrown while listening.
|
rob@76
|
69
|
rob@76
|
70 - Fixed bug in posix SocketReceiveMultiplexer::Run() that would cause
|
rob@76
|
71 packets to stop being received if select() returned EINTR.
|
rob@76
|
72 (thanks to Björn Wöldecke)
|
rob@76
|
73
|
rob@76
|
74 - Updated and improved Makefile to avoid redundant re-linking
|
rob@76
|
75 (thanks to Douglas Mandell)
|
rob@76
|
76
|
rob@76
|
77 - Added CMakeLists.txt CMake build file (2010, thanks to David Doria)
|
rob@76
|
78
|
rob@76
|
79 - Switched license to plain MIT license with non binding request
|
rob@76
|
80 for contribution of improvements (same as current PortAudio
|
rob@76
|
81 boilerplate). See LICENSE file.
|
rob@76
|
82
|
rob@76
|
83 Thanks to Tim Blechmann, Rob Canning, Gwydion ap Dafydd, David Doria,
|
rob@76
|
84 Christopher Delaney, Jon McCormack, Douglas Mandell, Björn Wöldecke,
|
rob@76
|
85 all the guys at openFrameworks, and everyone who reported bugs,
|
rob@76
|
86 submitted patches and helped out with testing this release.
|
rob@76
|
87
|
rob@76
|
88 Thanks to Syneme at the University of Calgary for providing financial
|
rob@76
|
89 support for the 1.1.0 update.
|
rob@76
|
90
|
rob@76
|
91
|
rob@76
|
92 September 28, 2005
|
rob@76
|
93 ------------------
|
rob@76
|
94
|
rob@76
|
95 Compared to the previous official snapshot (November 2004) the
|
rob@76
|
96 current version of oscpack includes a re-written set of network
|
rob@76
|
97 classes and some changes to the syntax of the networking code. It no
|
rob@76
|
98 longer uses threads, which means that you don't need to use sleep()
|
rob@76
|
99 if you are writing a simple single-threaded server, or you need to
|
rob@76
|
100 spawn your own threads in a more complex application.
|
rob@76
|
101
|
rob@76
|
102 The list below summarises the changes if you are porting code from
|
rob@76
|
103 the previous release.
|
rob@76
|
104
|
rob@76
|
105 - There are no longer any threads in oscpack. if you need to
|
rob@76
|
106 set up an asynchronous listener you can create your own thread
|
rob@76
|
107 and call Run on an instance of SocketReceiveMultiplexer or
|
rob@76
|
108 UdpListeningReceiveSocket (see ip/UdpSocket.h) yourself.
|
rob@76
|
109
|
rob@76
|
110 - Host byte order is now used for network (IP) addresses
|
rob@76
|
111
|
rob@76
|
112 - Functions which used to take two parameters <address, port>
|
rob@76
|
113 now take an instance of IpEndpointName (see
|
rob@76
|
114 ip/IpEndpointName.h) this class has a number of convenient
|
rob@76
|
115 constructors for converting numbers and strings to internet
|
rob@76
|
116 addresses. For example there is one which takes a string and
|
rob@76
|
117 another that take the dotted address components as separate
|
rob@76
|
118 parameters.
|
rob@76
|
119
|
rob@76
|
120 - The UdpTransmitPort class, formerly in UdpTransmitPort.h, is
|
rob@76
|
121 now called UdpTransmitSocket, which is simply a convenience
|
rob@76
|
122 class derived from UdpSocket (see ip/UdpSocket.h). Where you
|
rob@76
|
123 used to use the constructor UdpTransmitPort( address, port) now
|
rob@76
|
124 you can use UdpTransmitSocket( IpEndpointName( address, port )
|
rob@76
|
125 ) or you can any of the other possible ctors to IpEndpointName
|
rob@76
|
126 () (see above). The Send() method is unchanged.
|
rob@76
|
127
|
rob@76
|
128 - The packet listener base class is now located in
|
rob@76
|
129 ip/PacketListener.h instead of PacketListenerPort.h. The
|
rob@76
|
130 ProcessPacket method now has an additional parameter indicating
|
rob@76
|
131 the remote endpoint
|
rob@76
|
132
|
rob@76
|
133 - The preferred way to set up listeners is with
|
rob@76
|
134 SocketReceiveMultiplexer (in ip/UdpSocket.h), this also allows
|
rob@76
|
135 attaching periodic timers. For simple applications which only
|
rob@76
|
136 listen to a single socket with no timers you can use
|
rob@76
|
137 UdpListeningReceiveSocket (also in UdpSocket.h) See
|
rob@76
|
138 osc/OscReceiveTest.cpp or osc/OscDump.cpp for examples of this.
|
rob@76
|
139 This is more or less equivalent to the UdpPacketListenerPort
|
rob@76
|
140 object in the old oscpack versions except that you need to
|
rob@76
|
141 explicitly call Run() before it will start receiving packets
|
rob@76
|
142 and it runs in the same thread, not a separate thread so Run()
|
rob@76
|
143 won't usually return.
|
rob@76
|
144
|
rob@76
|
145 - Explicit calls to InitializeNetworking() and
|
rob@76
|
146 TerminateNetworking() are no longer required for simple
|
rob@76
|
147 applications (more complex windows applications should
|
rob@76
|
148 instantiate NetworkInitializer in main() or WinMain (see
|
rob@76
|
149 ip/NetworkingUtils.h/.cpp)
|
rob@76
|
150
|
rob@76
|
151 - The OscPacketListener base class (OscPacketListener.h) was
|
rob@76
|
152 added to make traversing OSC packets easier, it handles bundle
|
rob@76
|
153 traversal automatically so you only need to process messages in
|
rob@76
|
154 your derived classes.
|
rob@76
|
155
|
rob@76
|
156 - On Windows be sure to link with ws2_32.lib or you will see
|
rob@76
|
157 a linker error about WSAEventSelect not being found. Also you
|
rob@76
|
158 will need to link with winmm.lib for timeGetTime()
|
rob@76
|
159
|