Finish up the emacs module only approach
This commit is contained in:
parent
9f657ce1d6
commit
3836dc5ec5
19
builder
19
builder
|
@ -142,8 +142,25 @@ function clean() { ## Cleans up the source dir and removes the build
|
|||
rm -rf "$(find . -iname '*~')"
|
||||
}
|
||||
|
||||
function x() { ## Runs Xephyr for testing purposes
|
||||
Xephyr -br -ac -noreset -screen 800x600 :1
|
||||
}
|
||||
|
||||
function dev-start() { ## Runs the development env
|
||||
x &
|
||||
DISPLAY=:1 "$EMACS_DEV/bin/emacs" -Q \
|
||||
--eval "(setq feynman_path \"$ME/build/src/libfeynman.so\")" \
|
||||
--daemon=test \
|
||||
--load "$ME/lisp/test.el" "$@"
|
||||
}
|
||||
|
||||
function dev-stop() { ## Stops the development env
|
||||
DISPLAY=:1 "$EMACS_DEV/bin/emacsclient" --socket-name=test -e "(kill-emacs)"
|
||||
killall Xephyr
|
||||
}
|
||||
|
||||
function run() { ## Runs Emacs and loads feynman
|
||||
"$EMACS_DEV/bin/emacs" -Q --eval "(setq feynman_path \"$ME/build/src/libfeynman.so\")" --load "$ME/lisp/test.el" "$@"
|
||||
DISPLAY=:1 "$EMACS_DEV/bin/emacsclient" --socket-name=test -c -fs
|
||||
}
|
||||
|
||||
|
||||
|
|
14
lisp/test.el
14
lisp/test.el
|
@ -1,5 +1,11 @@
|
|||
|
||||
(module-load feynman_path)
|
||||
(setq conn (feynman/start))
|
||||
(message ">> %s" conn)
|
||||
(message ">>>> %s" (feynman/stop conn))
|
||||
(defvar conn nil)
|
||||
(defun stop-feynman ()
|
||||
(interactive)
|
||||
(message ">>>> %s" (feynman/stop conn)))
|
||||
|
||||
(add-hook 'before-make-frame-hook
|
||||
(lambda ()
|
||||
(print "hereeee")
|
||||
(setq conn (feynman/start))
|
||||
(message ">> %s" conn)))
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "utils.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <wayland-server-core.h>
|
||||
#include <wlr/backend.h>
|
||||
#include <wlr/backend/interface.h>
|
||||
#include <wlr/interfaces/wlr_output.h>
|
||||
|
@ -741,7 +742,7 @@ server_new_xdg_surface (struct wl_listener *listener, void *data)
|
|||
}
|
||||
|
||||
int
|
||||
start_feynman (emacs_env *env, struct feynman_server *server)
|
||||
init_feynman_server (emacs_env *env, struct feynman_server *server)
|
||||
{
|
||||
wlr_log_init (WLR_DEBUG, NULL);
|
||||
|
||||
|
@ -892,15 +893,22 @@ start_feynman (emacs_env *env, struct feynman_server *server)
|
|||
wlr_log (WLR_INFO, "Running Wayland compositor on WAYLAND_DISPLAY=%s",
|
||||
socket);
|
||||
|
||||
wl_display_run (server->wl_display);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
start_feynman (struct feynman_server *server)
|
||||
{
|
||||
assert (server);
|
||||
wl_display_run (server->wl_display);
|
||||
}
|
||||
|
||||
void
|
||||
stop_feynman (emacs_env *env, struct feynman_server *server)
|
||||
{
|
||||
(void)env;
|
||||
|
||||
wl_display_terminate (server->wl_display);
|
||||
/* Once wl_display_run returns, we shut down the server-> */
|
||||
wl_display_destroy_clients (server->wl_display);
|
||||
wl_display_destroy (server->wl_display);
|
||||
|
|
|
@ -119,6 +119,7 @@ struct feynman_keyboard
|
|||
struct wl_listener modifiers;
|
||||
struct wl_listener key;
|
||||
};
|
||||
int start_feynman (emacs_env *env, struct feynman_server *server);
|
||||
int init_feynman_server (emacs_env *env, struct feynman_server *server);
|
||||
void start_feynman (struct feynman_server *server);
|
||||
void stop_feynman (emacs_env *env, struct feynman_server *server);
|
||||
#endif
|
||||
|
|
|
@ -43,7 +43,7 @@ start_event_loop (void *server_ptr)
|
|||
assert (server_ptr);
|
||||
struct feynman_server *server = (struct feynman_server *)server_ptr;
|
||||
|
||||
wl_display_run (server->wl_display);
|
||||
start_feynman (server);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ feynman_start (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data)
|
|||
emacs_value nil = env->intern (env, "nil");
|
||||
|
||||
struct feynman_server *server = malloc (sizeof (struct feynman_server));
|
||||
int err = start_feynman (env, server);
|
||||
int err = init_feynman_server (env, server);
|
||||
if (err != 0)
|
||||
{
|
||||
em_error (env, "Start process failed.Received none zero error code: %d",
|
||||
|
@ -65,8 +65,8 @@ feynman_start (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data)
|
|||
}
|
||||
// feynman_events_q = (queue_t *)init_queue(100);
|
||||
|
||||
/* pthread_create (&server->server_thread_id, NULL, start_event_loop, */
|
||||
/* (void *)server); */
|
||||
pthread_create (&server->server_thread_id, NULL, start_event_loop,
|
||||
(void *)server);
|
||||
server_state = env->make_global_ref (
|
||||
env, env->make_user_ptr (env, free_value, (void *)server));
|
||||
|
||||
|
|
Loading…
Reference in New Issue