summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-03-01 14:42:06 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-03-01 14:42:06 (GMT)
commit8c4977361f9e7998da298b9648f3ad4be5e772ff (patch)
treebb1d13181127509265df0975ecd0c58a9d5a37f7 /src/uscxml/plugins
parentc1ccbef7a59df33e6ff0c9a4609caab7e668ba77 (diff)
downloaduscxml-8c4977361f9e7998da298b9648f3ad4be5e772ff.zip
uscxml-8c4977361f9e7998da298b9648f3ad4be5e772ff.tar.gz
uscxml-8c4977361f9e7998da298b9648f3ad4be5e772ff.tar.bz2
Fixed a bug with firlname containing the whole path
Diffstat (limited to 'src/uscxml/plugins')
-rw-r--r--src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp19
-rw-r--r--src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.cpp9
2 files changed, 21 insertions, 7 deletions
diff --git a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp
index b7477df..37be3e0 100644
--- a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp
+++ b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp
@@ -112,11 +112,18 @@ void DirMonInvoker::reportExisting() {
void DirMonInvoker::handleFileAction(FW::WatchID watchid, const FW::String& dir, const FW::String& filename, FW::Action action) {
+ std::string path;
+ if (!boost::algorithm::starts_with(filename, dir)) {
+ path = dir + filename;
+ } else {
+ path = filename;
+ }
+
if (_suffixes.size() > 0) {
bool validSuffix = false;
std::set<std::string>::iterator suffixIter = _suffixes.begin();
while(suffixIter != _suffixes.end()) {
- if (boost::algorithm::ends_with(filename, *suffixIter)) {
+ if (boost::algorithm::ends_with(path, *suffixIter)) {
validSuffix = true;
break;
}
@@ -148,9 +155,9 @@ void DirMonInvoker::handleFileAction(FW::WatchID watchid, const FW::String& dir,
// basename is the filename with suffix
std::string basename;
size_t lastSep;
- if ((lastSep = filename.find_last_of(PATH_SEPERATOR)) != std::string::npos) {
+ if ((lastSep = path.find_last_of(PATH_SEPERATOR)) != std::string::npos) {
lastSep++;
- basename = filename.substr(lastSep, filename.length() - lastSep);
+ basename = path.substr(lastSep, path.length() - lastSep);
event.data.compound["file"].compound["name"] = Data(basename, Data::VERBATIM);
}
@@ -160,8 +167,8 @@ void DirMonInvoker::handleFileAction(FW::WatchID watchid, const FW::String& dir,
struct stat fileStat;
if (action != FW::Actions::Delete) {
- if (stat(filename.c_str(), &fileStat) != 0) {
- LOG(ERROR) << "Error with stat on directory entry " << filename << ": " << strerror(errno);
+ if (stat(path.c_str(), &fileStat) != 0) {
+ LOG(ERROR) << "Error with stat on directory entry " << path << ": " << strerror(errno);
return;
} else {
event.data.compound["file"].compound["mtime"] = toStr(fileStat.st_mtime);
@@ -193,7 +200,7 @@ void DirMonInvoker::handleFileAction(FW::WatchID watchid, const FW::String& dir,
}
}
- event.data.compound["file"].compound["path"] = Data(filename, Data::VERBATIM);
+ event.data.compound["file"].compound["path"] = Data(path, Data::VERBATIM);
event.data.compound["file"].compound["dir"] = Data(dir, Data::VERBATIM);
returnEvent(event);
diff --git a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.cpp b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.cpp
index 0337770..ea249e4 100644
--- a/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.cpp
+++ b/src/uscxml/plugins/invoker/graphics/openscenegraph/OSGConverter.cpp
@@ -195,7 +195,14 @@ void OSGConverter::process(const SendRequest& req) {
traits->height = height;
traits->pbuffer = true;
osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());
- GLenum pbuffer = gc->getTraits()->doubleBuffer ? GL_BACK : GL_FRONT;
+
+ if (!gc.valid()) {
+ LOG(ERROR) << "Cannot create GraphicsContext!";
+ return;
+ }
+
+
+ GLenum pbuffer = gc->getTraits()->doubleBuffer ? GL_BACK : GL_FRONT;
viewer.getCamera()->setGraphicsContext(gc.get());
viewer.getCamera()->setViewport(new osg::Viewport(0,0,traits->width,traits->height));