summaryrefslogtreecommitdiff
path: root/recordmydesktop/src
diff options
context:
space:
mode:
Diffstat (limited to 'recordmydesktop/src')
-rw-r--r--recordmydesktop/src/initialize_data.c1
-rw-r--r--recordmydesktop/src/recordmydesktop.c5
-rw-r--r--recordmydesktop/src/register_callbacks.c14
-rw-r--r--recordmydesktop/src/register_callbacks.h2
-rw-r--r--recordmydesktop/src/rmd_jack.c9
-rw-r--r--recordmydesktop/src/rmd_rescue.c3
-rw-r--r--recordmydesktop/src/rmdthreads.c2
7 files changed, 26 insertions, 10 deletions
diff --git a/recordmydesktop/src/initialize_data.c b/recordmydesktop/src/initialize_data.c
index 30a0ab8..df30292 100644
--- a/recordmydesktop/src/initialize_data.c
+++ b/recordmydesktop/src/initialize_data.c
@@ -112,7 +112,6 @@ int InitializeData(ProgData *pdata,
pdata->running=1;
time_cond=&pdata->time_cond;
pause_cond=&pdata->pause_cond;
- Running=&pdata->running;
PauseStateChanged=0;
if(!pdata->args.nosound){
diff --git a/recordmydesktop/src/recordmydesktop.c b/recordmydesktop/src/recordmydesktop.c
index 8c46ab7..e2b394e 100644
--- a/recordmydesktop/src/recordmydesktop.c
+++ b/recordmydesktop/src/recordmydesktop.c
@@ -58,7 +58,10 @@ int main(int argc,char **argv){
CacheData cache_data;
#ifdef HAVE_JACK_H
JackData jdata;
- pdata.jdata=&jdata;
+
+ // Give jack access to program data, mainly for program state
+ jdata.pdata = &pdata;
+ pdata.jdata = &jdata;
#endif
// Query display specs
diff --git a/recordmydesktop/src/register_callbacks.c b/recordmydesktop/src/register_callbacks.c
index 79ee3fe..c16f7b1 100644
--- a/recordmydesktop/src/register_callbacks.c
+++ b/recordmydesktop/src/register_callbacks.c
@@ -30,6 +30,11 @@
#include "register_callbacks.h"
+// There seem to be no way of passing user data to the signal handler,
+// so hack around not being able to pass ProgData to them
+static int *pdata_running = NULL;
+
+
static void SetPaused(int signum) {
PauseStateChanged = 1;
@@ -39,7 +44,9 @@ static void SetRunning(int signum) {
if (!Paused){
- *Running = 0;
+ if (pdata_running != NULL) {
+ *pdata_running = 0;
+ }
if (signum == SIGABRT) {
Aborted = 1;
@@ -47,11 +54,14 @@ static void SetRunning(int signum) {
}
}
-void RegisterCallbacks(ProgArgs *prog_data) {
+void RegisterCallbacks(ProgData *pata) {
struct sigaction pause_act;
struct sigaction end_act;
+ // Is there some way to pass pata to the signal handlers?
+ pdata_running = &pata->running;
+
// Setup pause_act
sigfillset(&pause_act.sa_mask);
pause_act.sa_flags = SA_RESTART;
diff --git a/recordmydesktop/src/register_callbacks.h b/recordmydesktop/src/register_callbacks.h
index a0a4522..1fb3b76 100644
--- a/recordmydesktop/src/register_callbacks.h
+++ b/recordmydesktop/src/register_callbacks.h
@@ -35,7 +35,7 @@
* Set up all callbacks and signal handlers
* \param pdata ProgData struct containing all program data
*/
-void RegisterCallbacks(ProgArgs *args);
+void RegisterCallbacks(ProgData *prog_data);
#endif
diff --git a/recordmydesktop/src/rmd_jack.c b/recordmydesktop/src/rmd_jack.c
index ed03a8a..1718c09 100644
--- a/recordmydesktop/src/rmd_jack.c
+++ b/recordmydesktop/src/rmd_jack.c
@@ -91,8 +91,10 @@ static int JackCapture(jack_nframes_t nframes,void *jdata_t) {
int i=0;
JackData *jdata=(JackData *)jdata_t;
- if((!*Running)||(Paused) || (!jdata->capture_started))
+ if (!jdata->pdata->running || Paused || !jdata->capture_started) {
return 0;
+ }
+
for(i= 0;i<jdata->nports;i++)
jdata->portbuf[i]=jack_port_get_buffer_p(jdata->ports[i],nframes);
//vorbis analysis buffer wants uninterleaved data
@@ -206,8 +208,11 @@ static int LoadJackLib(void *jack_lib_handle) {
//encode the result(if not on the fly)
//an exit cleanly.
static void JackShutdown(void *jdata_t) {
+ JackData *jdata = (JackData *)jdata_t;
+
+ jdata->pdata->running = 0;
+
fprintf (stderr, "JACK shutdown\n");
- *Running=0;
}
int StartJackClient(JackData *jdata){
diff --git a/recordmydesktop/src/rmd_rescue.c b/recordmydesktop/src/rmd_rescue.c
index 827a004..f49cd1b 100644
--- a/recordmydesktop/src/rmd_rescue.c
+++ b/recordmydesktop/src/rmd_rescue.c
@@ -111,9 +111,8 @@ int rmdRescue(const char *path){
Aborted=pdata.avd=0;
pdata.sound_buffer=NULL;
pdata.running=1;
- Running=&pdata.running;
- RegisterCallbacks(NULL);
+ RegisterCallbacks(&pdata);
fprintf(stderr,"Restoring %s!!!\n",path);
EncodeCache(&pdata);
diff --git a/recordmydesktop/src/rmdthreads.c b/recordmydesktop/src/rmdthreads.c
index bbdb166..705c383 100644
--- a/recordmydesktop/src/rmdthreads.c
+++ b/recordmydesktop/src/rmdthreads.c
@@ -92,7 +92,7 @@ void rmdThreads(ProgData *pdata){
(void *)FlushToOgg,
(void *)pdata);
- RegisterCallbacks(&pdata->args);
+ RegisterCallbacks(pdata);
pdata->timer_alive=1;
pthread_create(&timer_t,
NULL,
© All Rights Reserved