summaryrefslogtreecommitdiffstats
path: root/x11vnc/screen.c
diff options
context:
space:
mode:
authorrunge <runge>2006-03-12 05:50:01 +0000
committerrunge <runge>2006-03-12 05:50:01 +0000
commite2e9347946bbaf1bf87c571d4a1fd9115fe90954 (patch)
treee58c0b2d9dcddf0a8d2f90930119945020cb1f5c /x11vnc/screen.c
parent5e72609631a1893acfe6a31d0129553ed3044a20 (diff)
downloadlibtdevnc-e2e9347946bbaf1bf87c571d4a1fd9115fe90954.tar.gz
libtdevnc-e2e9347946bbaf1bf87c571d4a1fd9115fe90954.zip
x11vnc: add -ssl mode using libssl. Include Xdummy in misc.
Diffstat (limited to 'x11vnc/screen.c')
-rw-r--r--x11vnc/screen.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/x11vnc/screen.c b/x11vnc/screen.c
index 121a736..ea2b3df 100644
--- a/x11vnc/screen.c
+++ b/x11vnc/screen.c
@@ -18,11 +18,13 @@
#include "remote.h"
#include "unixpw.h"
#include "sslcmds.h"
+#include "sslhelper.h"
void set_colormap(int reset);
void set_nofb_params(int restore);
void set_raw_fb_params(int restore);
void do_new_fb(int reset_mem);
+void free_old_fb(char *old_main, char *old_rfb, char *old_8to24);
void check_padded_fb(void);
void install_padded_fb(char *geom);
XImage *initialize_xdisplay_fb(void);
@@ -552,6 +554,18 @@ static void nofb_hook(rfbClientPtr cl) {
screen->displayHook = NULL;
}
+void free_old_fb(char *old_main, char *old_rfb, char *old_8to24) {
+ if (old_main) {
+ free(old_main);
+ }
+ if (old_rfb && old_rfb != old_main) {
+ free(old_rfb);
+ }
+ if (old_8to24 && old_8to24 != old_main && old_8to24 != old_rfb) {
+ free(old_8to24);
+ }
+}
+
void do_new_fb(int reset_mem) {
XImage *fb;
char *old_main = main_fb;
@@ -580,15 +594,8 @@ void do_new_fb(int reset_mem) {
initialize_polling_images();
}
- if (old_main) {
- free(old_main);
- }
- if (old_rfb && old_rfb != old_main) {
- free(old_rfb);
- }
- if (old_8to24 && old_8to24 != old_main && old_8to24 != old_rfb) {
- free(old_8to24);
- }
+ free_old_fb(old_main, old_rfb, old_8to24);
+
fb0 = fb;
}
@@ -1572,7 +1579,9 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
/* n.b. samplesPerPixel (set = 1 here) seems to be unused. */
if (create_screen) {
- if (use_stunnel) {
+ if (use_openssl) {
+ openssl_init();
+ } else if (use_stunnel) {
setup_stunnel(0, argc, argv);
}
screen = rfbGetScreen(argc, argv, width, height,
@@ -1954,6 +1963,10 @@ void initialize_screen(int *argc, char **argv, XImage *fb) {
rfbInitServer(screen);
+ if (use_openssl) {
+ openssl_port();
+ }
+
install_passwds();
}