version 5.2.1
fix potentially errors in PIConstChars compare methods PIHIDevice::open() for open last device PIVariant::toPoint() now can cast from PIMathVectord
This commit is contained in:
@@ -6,7 +6,7 @@ endif()
|
|||||||
project(PIP)
|
project(PIP)
|
||||||
set(PIP_MAJOR 5)
|
set(PIP_MAJOR 5)
|
||||||
set(PIP_MINOR 2)
|
set(PIP_MINOR 2)
|
||||||
set(PIP_REVISION 0)
|
set(PIP_REVISION 1)
|
||||||
set(PIP_SUFFIX )
|
set(PIP_SUFFIX )
|
||||||
set(PIP_COMPANY SHS)
|
set(PIP_COMPANY SHS)
|
||||||
set(PIP_DOMAIN org.SHS)
|
set(PIP_DOMAIN org.SHS)
|
||||||
|
|||||||
@@ -125,6 +125,11 @@ bool PIHIDevice::open(const PIHIDeviceInfo & device) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PIHIDevice::open() {
|
||||||
|
return open(di);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void PIHIDevice::close() {
|
void PIHIDevice::close() {
|
||||||
stop();
|
stop();
|
||||||
#ifndef WINDOWS
|
#ifndef WINDOWS
|
||||||
@@ -242,12 +247,13 @@ void PIHIDevice::run() {
|
|||||||
if (ReadFile(PRIVATE->deviceHandle, PRIVATE->buffer.data(), PRIVATE->buffer.size_s(), &readed, nullptr) != TRUE) return;
|
if (ReadFile(PRIVATE->deviceHandle, PRIVATE->buffer.data(), PRIVATE->buffer.size_s(), &readed, nullptr) != TRUE) return;
|
||||||
// piCout << readed << PRIVATE->buffer.size();
|
// piCout << readed << PRIVATE->buffer.size();
|
||||||
if (readed != PRIVATE->buffer.size()) return;
|
if (readed != PRIVATE->buffer.size()) return;
|
||||||
auto gd = HidP_GetData(HidP_Input, gdd, &gdd_len, PRIVATE->preparsed, (PCHAR)PRIVATE->buffer.data(), PRIVATE->buffer.size_s());
|
auto gd = HidP_GetData(HidP_Input, gdd, &gdd_len, PRIVATE->preparsed, (PCHAR)PRIVATE->buffer.data(), PRIVATE->buffer.size_s());
|
||||||
|
NO_UNUSED(gd);
|
||||||
// piCout << "readed" << PRIVATE->buffer << gdd_len;
|
// piCout << "readed" << PRIVATE->buffer << gdd_len;
|
||||||
auto cbit = cur_buttons.makeIterator();
|
auto cbit = cur_buttons.makeIterator();
|
||||||
while (cbit.next())
|
while (cbit.next())
|
||||||
cbit.value() = 0;
|
cbit.value() = 0;
|
||||||
for (int i = 0; i < gdd_len; ++i) {
|
for (ULONG i = 0; i < gdd_len; ++i) {
|
||||||
const auto & cd(gdd[i]);
|
const auto & cd(gdd[i]);
|
||||||
// piCout << cd.DataIndex << cd.RawValue;
|
// piCout << cd.DataIndex << cd.RawValue;
|
||||||
auto vi = di.axis_by_dataindex.value(cd.DataIndex);
|
auto vi = di.axis_by_dataindex.value(cd.DataIndex);
|
||||||
@@ -258,7 +264,7 @@ void PIHIDevice::run() {
|
|||||||
e.value = static_cast<LONG>(cd.RawValue);
|
e.value = static_cast<LONG>(cd.RawValue);
|
||||||
event(e);
|
event(e);
|
||||||
} else {
|
} else {
|
||||||
auto & axis(cur_axes[cd.DataIndex]);
|
// auto & axis(cur_axes[cd.DataIndex]);
|
||||||
float fv = (cd.RawValue - vi.min) / piMaxf(1.f, (float)(vi.max - vi.min));
|
float fv = (cd.RawValue - vi.min) / piMaxf(1.f, (float)(vi.max - vi.min));
|
||||||
cur_axes[vi.data_index] = procDeadZone(fv);
|
cur_axes[vi.data_index] = procDeadZone(fv);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ public:
|
|||||||
|
|
||||||
bool isOpened() const;
|
bool isOpened() const;
|
||||||
bool open(const PIHIDeviceInfo & device);
|
bool open(const PIHIDeviceInfo & device);
|
||||||
|
bool open();
|
||||||
void close();
|
void close();
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ public:
|
|||||||
if (isNull() && s.isNull()) return true;
|
if (isNull() && s.isNull()) return true;
|
||||||
if (isNull() xor s.isNull()) return false;
|
if (isNull() xor s.isNull()) return false;
|
||||||
if (size() != s.size()) return false;
|
if (size() != s.size()) return false;
|
||||||
return strcmp(str, s.str) == 0;
|
return strncmp(str, s.str, size()) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \~english Compare operator.
|
//! \~english Compare operator.
|
||||||
@@ -209,7 +209,7 @@ public:
|
|||||||
if (isNull() && s.isNull()) return false;
|
if (isNull() && s.isNull()) return false;
|
||||||
if (isNull() && !s.isNull()) return true;
|
if (isNull() && !s.isNull()) return true;
|
||||||
if (!isNull() && s.isNull()) return false;
|
if (!isNull() && s.isNull()) return false;
|
||||||
if (size() == s.size()) return strcmp(str, s.str) < 0;
|
if (size() == s.size()) return strncmp(str, s.str, size()) < 0;
|
||||||
return size() < s.size();
|
return size() < s.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ public:
|
|||||||
if (isNull() && s.isNull()) return false;
|
if (isNull() && s.isNull()) return false;
|
||||||
if (isNull() && !s.isNull()) return false;
|
if (isNull() && !s.isNull()) return false;
|
||||||
if (!isNull() && s.isNull()) return true;
|
if (!isNull() && s.isNull()) return true;
|
||||||
if (size() == s.size()) return strcmp(str, s.str) > 0;
|
if (size() == s.size()) return strncmp(str, s.str, size()) > 0;
|
||||||
return size() > s.size();
|
return size() > s.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1754,16 +1754,24 @@ PIVariantTypes::IODevice PIVariant::toIODevice() const {
|
|||||||
//!
|
//!
|
||||||
PIPointd PIVariant::toPoint() const {
|
PIPointd PIVariant::toPoint() const {
|
||||||
PIByteArray ba(_content);
|
PIByteArray ba(_content);
|
||||||
|
if (_type == PIVariant::pivPoint) {
|
||||||
|
PIPointd r;
|
||||||
|
ba >> r;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
if (_type == PIVariant::pivString) {
|
if (_type == PIVariant::pivString) {
|
||||||
PIString r;
|
PIString r;
|
||||||
ba >> r;
|
ba >> r;
|
||||||
PIStringList l = r.split(';');
|
PIStringList l = r.split(';');
|
||||||
if (l.size() >= 2) return PIPointd(l[0].toDouble(), l[1].toDouble());
|
if (l.size() >= 2) return PIPointd(l[0].toDouble(), l[1].toDouble());
|
||||||
}
|
}
|
||||||
if (_type == PIVariant::pivPoint) {
|
if (_type == PIVariant::pivMathVector) {
|
||||||
PIPointd r;
|
PIMathVectord r;
|
||||||
ba >> r;
|
ba >> r;
|
||||||
return r;
|
PIPointd ret;
|
||||||
|
if (r.size() > 0) ret.x = r[0];
|
||||||
|
if (r.size() > 1) ret.y = r[1];
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
return PIPointd();
|
return PIPointd();
|
||||||
}
|
}
|
||||||
@@ -1880,6 +1888,14 @@ PIMathVectord PIVariant::toMathVector() const {
|
|||||||
ba >> r;
|
ba >> r;
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
if (_type == PIVariant::pivPoint) {
|
||||||
|
PIPointd r;
|
||||||
|
ba >> r;
|
||||||
|
PIMathVectord ret(2);
|
||||||
|
ret[0] = r.x;
|
||||||
|
ret[1] = r.y;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
return PIMathVectord();
|
return PIMathVectord();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user