]> sigrok.org Git - pulseview.git/blobdiff - pv/session.cpp
win32: Re-fix the Windows build (namespace pollution via windows.h).
[pulseview.git] / pv / session.cpp
index 22e0428d94abf26a5421c540377dc9e55c6ddccf..e6fb52fd7dd0d589342ed877ee573cbb572a4755 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#ifdef _WIN32
+// Windows: Avoid boost/thread namespace pollution (which includes windows.h).
+#define NOGDI
+#define NORESOURCE
+#endif
+#include <boost/thread/locks.hpp>
+#include <boost/thread/shared_mutex.hpp>
+
 #ifdef ENABLE_DECODE
 #include <libsigrokdecode/libsigrokdecode.h>
 #endif
@@ -127,8 +135,11 @@ void Session::set_device(shared_ptr<devices::Device> device)
        // Ensure we are not capturing before setting the device
        stop_capture();
 
+       if (device_)
+               device_->close();
+
        device_ = std::move(device);
-       device_->create();
+       device_->open();
        device_->session()->add_datafeed_callback([=]
                (shared_ptr<sigrok::Device> device, shared_ptr<Packet> packet) {
                        data_feed_in(device, packet);
@@ -211,13 +222,9 @@ set< shared_ptr<data::SignalData> > Session::get_data() const
        return data;
 }
 
-boost::shared_mutex& Session::signals_mutex() const
-{
-       return signals_mutex_;
-}
-
-const unordered_set< shared_ptr<view::Signal> >& Session::signals() const
+const unordered_set< shared_ptr<view::Signal> > Session::signals() const
 {
+       shared_lock<shared_mutex> lock(signals_mutex_);
        return signals_;
 }
 
@@ -519,7 +526,7 @@ void Session::feed_in_analog(shared_ptr<Analog> analog)
        const vector<shared_ptr<Channel>> channels = analog->channels();
        const unsigned int channel_count = channels.size();
        const size_t sample_count = analog->num_samples() / channel_count;
-       const float *data = analog->data_pointer();
+       const float *data = static_cast<const float *>(analog->data_pointer());
        bool sweep_beginning = false;
 
        for (auto channel : channels)