diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 84da08d7b7fcda12c85caeb5a10b4903770a6f69 (patch) | |
tree | 2a6aea76f2dfffb4cc04bb907c4725af94f70e72 /noatun-plugins/blurscope/sdlscope.cpp | |
download | tdeaddons-84da08d7b7fcda12c85caeb5a10b4903770a6f69.tar.gz tdeaddons-84da08d7b7fcda12c85caeb5a10b4903770a6f69.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaddons@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'noatun-plugins/blurscope/sdlscope.cpp')
-rw-r--r-- | noatun-plugins/blurscope/sdlscope.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/noatun-plugins/blurscope/sdlscope.cpp b/noatun-plugins/blurscope/sdlscope.cpp new file mode 100644 index 0000000..9485c1f --- /dev/null +++ b/noatun-plugins/blurscope/sdlscope.cpp @@ -0,0 +1,78 @@ +/***************************************************************** + +Copyright (c) 2001 Charles Samuels <charles@kde.org> + 2001 Neil Stevens <multivac@fcmail.com> + With code stolen from Paul Harrison <pfh@yoyo.cc.monash.edu.au> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIAB\ILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************/ + +#include <sys/wait.h> +#include <sys/types.h> + +#include "sdlscope.h" + +extern "C" +{ +Plugin *create_plugin() +{ + return new SDLScope(); +} +} + +SDLScope::SDLScope() + : MonoScope(50) + , Plugin() +{ + setSamples(320); +} + +SDLScope::~SDLScope() +{ + ::close(mOutFd); + wait(0); +} + +void SDLScope::init() +{ + int pipes[2]; + ::pipe(pipes); + mOutFd=pipes[1]; + if (!fork()) + { + ::close(pipes[1]); + new SDLView(pipes[0]); + exit(0); + } + else + { + fcntl(mOutFd, F_SETFL, fcntl(mOutFd, F_GETFL) & ~O_NONBLOCK); + ::close(pipes[0]); + MonoScope::start(); + } +} + +void SDLScope::scopeEvent(float *d, int size) +{ + if (::write(mOutFd, (char *)d, size * sizeof(float))==-1) + { + MonoScope::stop(); + unload(); + } +} + |