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 '*~')"
|
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
|
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)
|
(module-load feynman_path)
|
||||||
(setq conn (feynman/start))
|
(defvar conn nil)
|
||||||
(message ">> %s" conn)
|
(defun stop-feynman ()
|
||||||
(message ">>>> %s" (feynman/stop conn))
|
(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 "utils.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <wayland-server-core.h>
|
||||||
#include <wlr/backend.h>
|
#include <wlr/backend.h>
|
||||||
#include <wlr/backend/interface.h>
|
#include <wlr/backend/interface.h>
|
||||||
#include <wlr/interfaces/wlr_output.h>
|
#include <wlr/interfaces/wlr_output.h>
|
||||||
|
@ -741,7 +742,7 @@ server_new_xdg_surface (struct wl_listener *listener, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
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);
|
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",
|
wlr_log (WLR_INFO, "Running Wayland compositor on WAYLAND_DISPLAY=%s",
|
||||||
socket);
|
socket);
|
||||||
|
|
||||||
wl_display_run (server->wl_display);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
start_feynman (struct feynman_server *server)
|
||||||
|
{
|
||||||
|
assert (server);
|
||||||
|
wl_display_run (server->wl_display);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
stop_feynman (emacs_env *env, struct feynman_server *server)
|
stop_feynman (emacs_env *env, struct feynman_server *server)
|
||||||
{
|
{
|
||||||
(void)env;
|
(void)env;
|
||||||
|
|
||||||
|
wl_display_terminate (server->wl_display);
|
||||||
/* Once wl_display_run returns, we shut down the server-> */
|
/* Once wl_display_run returns, we shut down the server-> */
|
||||||
wl_display_destroy_clients (server->wl_display);
|
wl_display_destroy_clients (server->wl_display);
|
||||||
wl_display_destroy (server->wl_display);
|
wl_display_destroy (server->wl_display);
|
||||||
|
|
|
@ -119,6 +119,7 @@ struct feynman_keyboard
|
||||||
struct wl_listener modifiers;
|
struct wl_listener modifiers;
|
||||||
struct wl_listener key;
|
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);
|
void stop_feynman (emacs_env *env, struct feynman_server *server);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -43,7 +43,7 @@ start_event_loop (void *server_ptr)
|
||||||
assert (server_ptr);
|
assert (server_ptr);
|
||||||
struct feynman_server *server = (struct feynman_server *)server_ptr;
|
struct feynman_server *server = (struct feynman_server *)server_ptr;
|
||||||
|
|
||||||
wl_display_run (server->wl_display);
|
start_feynman (server);
|
||||||
return NULL;
|
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");
|
emacs_value nil = env->intern (env, "nil");
|
||||||
|
|
||||||
struct feynman_server *server = malloc (sizeof (struct feynman_server));
|
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)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
em_error (env, "Start process failed.Received none zero error code: %d",
|
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);
|
// feynman_events_q = (queue_t *)init_queue(100);
|
||||||
|
|
||||||
/* pthread_create (&server->server_thread_id, NULL, start_event_loop, */
|
pthread_create (&server->server_thread_id, NULL, start_event_loop,
|
||||||
/* (void *)server); */
|
(void *)server);
|
||||||
server_state = env->make_global_ref (
|
server_state = env->make_global_ref (
|
||||||
env, env->make_user_ptr (env, free_value, (void *)server));
|
env, env->make_user_ptr (env, free_value, (void *)server));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue