Move files to proper location. Get rid of unnecessary lock. Remove wrongly-committed file.
This commit is contained in:
parent
9f167cc26a
commit
2a18630718
@ -1,54 +0,0 @@
|
||||
# Set environment variables
|
||||
env:
|
||||
global:
|
||||
- secure: "eNufz0915oMHd4cNbvo+YysNgJSP3IFrsWPFkVtg2S/L3hCv9+sTto/yuX00\nHvaJ1lcvak2DkiQmslJubcjpGNOysjp6rjhY92YodZs+wZwsrevjoanj9qWH\nwHz2eM1N6fvebMmzNS9fwwFmY3DiCDwBoTssz8aLs0etg+2xVBw="
|
||||
|
||||
matrix:
|
||||
- secure: "eNufz0915oMHd4cNbvo+YysNgJSP3IFrsWPFkVtg2S/L3hCv9+sTto/yuX00\nHvaJ1lcvak2DkiQmslJubcjpGNOysjp6rjhY92YodZs+wZwsrevjoanj9qWH\nwHz2eM1N6fvebMmzNS9fwwFmY3DiCDwBoTssz8aLs0etg+2xVBw="
|
||||
|
||||
# use c and gcc
|
||||
language: c
|
||||
compiler: gcc
|
||||
|
||||
# install all vnc-related dependencies
|
||||
before_install:
|
||||
- sudo apt-get install tomcat6
|
||||
- sudo apt-get install libvncserver0
|
||||
- sudo apt-get install libvncserver-dev
|
||||
- sudo apt-get install libfreerdp1
|
||||
- sudo apt-get install libvorbis-dev
|
||||
- sudo apt-get install libvorbisenc2
|
||||
- sudo apt-get install libpulse-dev
|
||||
- sudo apt-get install libcairo2-dev
|
||||
- git clone git://github.com/cmujedi/libguac.git
|
||||
- cd libguac
|
||||
- autoreconf -i
|
||||
- ./configure
|
||||
- make
|
||||
- sudo make install
|
||||
- sudo ldconfig
|
||||
- cd ..
|
||||
|
||||
# before build script, run autoreconf
|
||||
before_script: autoreconf -i
|
||||
|
||||
# Default is "./configure && make && make test", but no tests yet
|
||||
script: "./configure && make"
|
||||
|
||||
# after build script, run make install
|
||||
after_success:
|
||||
- sudo make install
|
||||
- curl -s -o output.txt $IRC_TREELOGIC_CHANNEL_TOKEN -d "service=TravisCI" -d "message=$TRAVIS_REPO_SLUG $TRAVIS_BUILD_NUMBER ( $TRAVIS_BRANCH - $TRAVIS_COMMIT ) - Passed" -d "url=https://grove.io/app" -d "icon_url=https://secure.travis-ci.org/$TRAVIS_REPO_SLUG.png"
|
||||
|
||||
|
||||
# after build script, run make install
|
||||
after_failure:
|
||||
- curl -s -o output.txt $IRC_TREELOGIC_CHANNEL_TOKEN -d "service=TravisCI" -d "message=$TRAVIS_REPO_SLUG $TRAVIS_BUILD_NUMBER ( $TRAVIS_BRANCH - $TRAVIS_COMMIT ) - Failed" -d "url=https://grove.io/app" -d "icon_url=https://secure.travis-ci.org/$TRAVIS_REPO_SLUG.png"
|
||||
|
||||
# add notification email addresses
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- cmujedi@west.cmu.edu
|
||||
webhooks:
|
||||
- secure: "eNufz0915oMHd4cNbvo+YysNgJSP3IFrsWPFkVtg2S/L3hCv9+sTto/yuX00\nHvaJ1lcvak2DkiQmslJubcjpGNOysjp6rjhY92YodZs+wZwsrevjoanj9qWH\nwHz2eM1N6fvebMmzNS9fwwFmY3DiCDwBoTssz8aLs0etg+2xVBw="
|
@ -42,28 +42,25 @@ AM_CFLAGS = -Werror -Wall -pedantic -Iinclude @LIBGUAC_INCLUDE@
|
||||
lib_LTLIBRARIES = libguac-client-vnc.la
|
||||
|
||||
libguac_client_vnc_la_SOURCES = \
|
||||
buffer.c \
|
||||
client.c \
|
||||
vnc_handlers.c \
|
||||
convert.c \
|
||||
guac_handlers.c \
|
||||
convert.c
|
||||
queue.c \
|
||||
vnc_handlers.c
|
||||
|
||||
noinst_HEADERS = \
|
||||
buffer.h \
|
||||
client.h \
|
||||
vnc_handlers.h \
|
||||
convert.h \
|
||||
guac_handlers.h \
|
||||
convert.h
|
||||
queue.h \
|
||||
vnc_handlers.h
|
||||
|
||||
# Optional PulseAudio support
|
||||
if ENABLE_PULSE
|
||||
libguac_client_vnc_la_SOURCES += \
|
||||
pa_handlers.c \
|
||||
queue.c \
|
||||
buffer.c
|
||||
|
||||
noinst_HEADERS += \
|
||||
pa_handlers.h \
|
||||
queue.h \
|
||||
buffer.h
|
||||
libguac_client_vnc_la_SOURCES += pa_handlers.c
|
||||
noinst_HEADERS += pa_handlers.h
|
||||
endif
|
||||
|
||||
libguac_client_vnc_la_LDFLAGS = -version-info 0:0:0 @VNC_LIBS@ @CAIRO_LIBS@ @PULSE_LIBS@
|
||||
|
@ -44,12 +44,7 @@
|
||||
#include <guacamole/socket.h>
|
||||
#include <guacamole/protocol.h>
|
||||
#include <guacamole/client.h>
|
||||
|
||||
#include <guacamole/audio.h>
|
||||
#include <guacamole/wav_encoder.h>
|
||||
#ifdef ENABLE_OGG
|
||||
#include <guacamole/ogg_encoder.h>
|
||||
#endif
|
||||
|
||||
#include "client.h"
|
||||
#include "vnc_handlers.h"
|
||||
@ -111,13 +106,13 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
|
||||
rfbClient* rfb_client;
|
||||
|
||||
vnc_guac_client_data* guac_client_data;
|
||||
|
||||
|
||||
#ifdef ENABLE_PULSE
|
||||
audio_args* args;
|
||||
|
||||
pthread_t pa_read_thread, pa_send_thread;
|
||||
#endif
|
||||
|
||||
int read_only;
|
||||
int i;
|
||||
|
||||
/* Set up libvncclient logging */
|
||||
rfbClientLog = guac_vnc_client_log_info;
|
||||
@ -173,37 +168,19 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
|
||||
|
||||
#ifdef ENABLE_PULSE
|
||||
guac_client_data->audio_enabled = (strcmp(argv[IDX_DISABLE_AUDIO], "true") != 0);
|
||||
|
||||
/* If audio enabled, choose an encoder */
|
||||
if (guac_client_data->audio_enabled) {
|
||||
|
||||
/* Choose an encoding */
|
||||
for (i=0; client->info.audio_mimetypes[i] != NULL; i++) {
|
||||
|
||||
const char* mimetype = client->info.audio_mimetypes[i];
|
||||
|
||||
#ifdef ENABLE_OGG
|
||||
/* If Ogg is supported, done. */
|
||||
if (strcmp(mimetype, ogg_encoder->mimetype) == 0) {
|
||||
guac_client_log_info(client, "Loading Ogg Vorbis encoder.");
|
||||
guac_client_data->audio = audio_stream_alloc(client,
|
||||
ogg_encoder);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If wav is supported, done. */
|
||||
if (strcmp(mimetype, wav_encoder->mimetype) == 0) {
|
||||
guac_client_log_info(client, "Loading wav encoder.");
|
||||
guac_client_data->audio = audio_stream_alloc(client,
|
||||
wav_encoder);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* If an encoding is available, load the sound plugin */
|
||||
|
||||
/* If an encoding is available, load an audio stream */
|
||||
if (guac_client_data->audio_enabled) {
|
||||
|
||||
guac_client_data->audio = guac_audio_stream_alloc(client, NULL);
|
||||
|
||||
/* If successful, init audio system */
|
||||
if (guac_client_data->audio != NULL) {
|
||||
|
||||
guac_client_log_info(client,
|
||||
"Audio will be encoded as %s",
|
||||
guac_client_data->audio->encoder->mimetype);
|
||||
|
||||
guac_client_data->audio_buffer = guac_pa_buffer_alloc();
|
||||
|
||||
args = malloc(sizeof(audio_args));
|
||||
@ -211,8 +188,10 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
|
||||
args->audio_buffer = guac_client_data->audio_buffer;
|
||||
|
||||
/* Create a thread to read audio data */
|
||||
if (pthread_create(&pa_read_thread, NULL, guac_pa_read_audio, (void*) args)) {
|
||||
guac_protocol_send_error(client->socket, "Error initializing PulseAudio thread");
|
||||
if (pthread_create(&pa_read_thread, NULL, guac_pa_read_audio,
|
||||
(void*) args)) {
|
||||
guac_protocol_send_error(client->socket,
|
||||
"Error initializing PulseAudio thread");
|
||||
guac_socket_flush(client->socket);
|
||||
return 1;
|
||||
}
|
||||
@ -220,17 +199,25 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
|
||||
guac_client_data->audio_read_thread = &pa_read_thread;
|
||||
|
||||
/* Create a thread to send audio data */
|
||||
if (pthread_create(&pa_send_thread, NULL, guac_pa_send_audio, (void*) args)) {
|
||||
guac_protocol_send_error(client->socket, "Error initializing PulseAudio thread");
|
||||
if (pthread_create(&pa_send_thread, NULL, guac_pa_send_audio,
|
||||
(void*) args)) {
|
||||
guac_protocol_send_error(client->socket,
|
||||
"Error initializing PulseAudio thread");
|
||||
guac_socket_flush(client->socket);
|
||||
return 1;
|
||||
}
|
||||
|
||||
guac_client_data->audio_send_thread = &pa_send_thread;
|
||||
}
|
||||
|
||||
/* Otherwise, audio loading failed */
|
||||
else
|
||||
guac_client_log_info(client, "No available audio encoding. Sound disabled.");
|
||||
|
||||
guac_client_log_info(client,
|
||||
"No available audio encoding. Sound disabled.");
|
||||
|
||||
/* Require threadsafe sockets if audio enabled */
|
||||
guac_socket_require_threadsafe(client->socket);
|
||||
|
||||
} /* end if audio enabled */
|
||||
#endif
|
||||
|
||||
|
@ -66,7 +66,7 @@ typedef struct vnc_guac_client_data {
|
||||
/**
|
||||
* Audio output, if any.
|
||||
*/
|
||||
audio_stream* audio;
|
||||
guac_audio_stream* audio;
|
||||
|
||||
/**
|
||||
* Audio buffer, if any.
|
||||
|
@ -39,7 +39,6 @@
|
||||
#include <time.h>
|
||||
#include <syslog.h>
|
||||
#include <iconv.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include <cairo/cairo.h>
|
||||
|
||||
@ -134,20 +133,12 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, int h, int bpp) {
|
||||
/* Send cursor data*/
|
||||
surface = cairo_image_surface_create_for_data(buffer, CAIRO_FORMAT_ARGB32, w, h, stride);
|
||||
|
||||
pthread_mutex_lock(&(gc->send_lock));
|
||||
|
||||
guac_protocol_send_png(socket,
|
||||
GUAC_COMP_SRC, cursor_layer, 0, 0, surface);
|
||||
|
||||
pthread_mutex_unlock(&(gc->send_lock));
|
||||
|
||||
pthread_mutex_lock(&(gc->send_lock));
|
||||
|
||||
/* Update cursor */
|
||||
guac_protocol_send_cursor(socket, x, y, cursor_layer, 0, 0, w, h);
|
||||
|
||||
pthread_mutex_unlock(&(gc->send_lock));
|
||||
|
||||
/* Free surface */
|
||||
cairo_surface_destroy(surface);
|
||||
free(buffer);
|
||||
@ -242,12 +233,8 @@ void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
||||
/* For now, only use default layer */
|
||||
surface = cairo_image_surface_create_for_data(buffer, CAIRO_FORMAT_RGB24, w, h, stride);
|
||||
|
||||
pthread_mutex_lock(&(gc->send_lock));
|
||||
|
||||
guac_protocol_send_png(socket, GUAC_COMP_OVER, GUAC_DEFAULT_LAYER, x, y, surface);
|
||||
|
||||
pthread_mutex_unlock(&(gc->send_lock));
|
||||
|
||||
/* Free surface */
|
||||
cairo_surface_destroy(surface);
|
||||
free(buffer);
|
||||
@ -259,15 +246,11 @@ void guac_vnc_copyrect(rfbClient* client, int src_x, int src_y, int w, int h, in
|
||||
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
||||
guac_socket* socket = gc->socket;
|
||||
|
||||
pthread_mutex_lock(&(gc->send_lock));
|
||||
|
||||
/* For now, only use default layer */
|
||||
guac_protocol_send_copy(socket,
|
||||
GUAC_DEFAULT_LAYER, src_x, src_y, w, h,
|
||||
GUAC_COMP_OVER, GUAC_DEFAULT_LAYER, dest_x, dest_y);
|
||||
|
||||
pthread_mutex_unlock(&(gc->send_lock));
|
||||
|
||||
((vnc_guac_client_data*) gc->data)->copy_rect_used = 1;
|
||||
|
||||
}
|
||||
@ -320,14 +303,10 @@ rfbBool guac_vnc_malloc_framebuffer(rfbClient* rfb_client) {
|
||||
guac_client* gc = rfbClientGetClientData(rfb_client, __GUAC_CLIENT);
|
||||
vnc_guac_client_data* guac_client_data = (vnc_guac_client_data*) gc->data;
|
||||
|
||||
pthread_mutex_lock(&(gc->send_lock));
|
||||
|
||||
/* Send new size */
|
||||
guac_protocol_send_size(gc->socket,
|
||||
GUAC_DEFAULT_LAYER, rfb_client->width, rfb_client->height);
|
||||
|
||||
pthread_mutex_unlock(&(gc->send_lock));
|
||||
|
||||
/* Use original, wrapped proc */
|
||||
return guac_client_data->rfb_MallocFrameBuffer(rfb_client);
|
||||
}
|
||||
@ -340,12 +319,8 @@ void guac_vnc_cut_text(rfbClient* client, const char* text, int textlen) {
|
||||
/* Convert ASCII character data to UTF-8 */
|
||||
char* utf8_text = convert("ISO_8859-1", "UTF-8", text);
|
||||
|
||||
pthread_mutex_lock(&(gc->send_lock));
|
||||
|
||||
guac_protocol_send_clipboard(socket, utf8_text);
|
||||
|
||||
pthread_mutex_unlock(&(gc->send_lock));
|
||||
|
||||
free(utf8_text);
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user