summaryrefslogtreecommitdiff
path: root/libs/surfaces/contourdesign
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-09-06 01:37:00 +0200
committerRobin Gareus <robin@gareus.org>2019-09-06 01:37:00 +0200
commit212b4456282afc1100643beebb861155002ac62e (patch)
treee30e9bdf6db2f548ac76bcdc684d76923d6ee02a /libs/surfaces/contourdesign
parent15defd5381bab315e5a5887ee65a4b8a1ef255a7 (diff)
Shuttle Surface: handle libusb_init() failure
USB stack may not be available on some systems, e.g. unit-test VM. When libusb_init(0) fails to create default context, further calls into the libusb API will cause segfaults.
Diffstat (limited to 'libs/surfaces/contourdesign')
-rw-r--r--libs/surfaces/contourdesign/contourdesign.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/surfaces/contourdesign/contourdesign.cc b/libs/surfaces/contourdesign/contourdesign.cc
index ac7ed0b536..1e4471b56b 100644
--- a/libs/surfaces/contourdesign/contourdesign.cc
+++ b/libs/surfaces/contourdesign/contourdesign.cc
@@ -89,7 +89,11 @@ ContourDesignControlProtocol::~ContourDesignControlProtocol ()
bool
ContourDesignControlProtocol::probe ()
{
- return true;
+ bool rv = LIBUSB_SUCCESS == libusb_init (0);
+ if (rv) {
+ libusb_exit (0);
+ }
+ return rv;
}
void*