Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Each OS improvements #163

Open
black7375 opened this issue Feb 10, 2021 · 5 comments
Open

Each OS improvements #163

black7375 opened this issue Feb 10, 2021 · 5 comments
Labels

Comments

@black7375
Copy link
Contributor

black7375 commented Feb 10, 2021

@black7375
Copy link
Contributor Author

black7375 commented Mar 19, 2021

@harryfei
Hello?
Today, I briefly read the source of the emacs.
It's a small amount of time, so it may not be accurate..

What do you think about the coexistence of emacs-ng's webrender + emacs:feature/pgtk || webrender + emacs-mac?
Their processing methods are different and seem to overlap quite a lot.

  • emacs.c (Webrender, PGTK, Mac)

emacs-ng/src/emacs.c

Lines 1953 to 1956 in e7c4c72

#ifdef USE_WEBRENDER
syms_of_wrterm ();
syms_of_fontset ();
#endif /* USE_WEBRENDER */

https://github.com/emacs-mirror/emacs/blob/7a7bc15242896b20c7af49f77f0e22c3d78e4d88/src/emacs.c#L1929-L1937
https://bitbucket.org/mituharu/emacs-mac/src/2345e4ca09f27f445adf12bc6613171dd4bfc5bf/src/emacs.c#lines-1957

  • xfaces.c(Webrender, PGTK, Mac)

emacs-ng/src/xfaces.c

Lines 574 to 592 in e7c4c72

#ifdef USE_WEBRENDER
/* webrender emulation of GCs */
static GC
x_create_gc (struct frame *f,
unsigned long mask,
Emacs_GC *xgcv)
{
GC gc = malloc (sizeof *gc);
*gc = *xgcv;
return gc;
}
static void
x_free_gc (struct frame *f, GC gc)
{
free (gc);
}
#endif /* USE_WEBRENDER */

https://github.com/emacs-mirror/emacs/blob/7a7bc15242896b20c7af49f77f0e22c3d78e4d88/src/xfaces.c#L578-L596
https://bitbucket.org/mituharu/emacs-mac/src/2345e4ca09f27f445adf12bc6613171dd4bfc5bf/src/xfaces.c#lines-553

I just want to ask how likely are they.
From my point of view, it is mutually beta now, and even if possible, there will be a lot of work.

I'm curious about your opinion because you have experience in integrating webrender.

@harryfei
Copy link
Member

harryfei commented Apr 12, 2021

What do you think about the coexistence of emacs-ng's webrender + emacs:feature/pgtk || webrender + emacs-mac?

AFAIK, webrender and pgtk can coexists in one repo because they all use the window system mechanism. emacs has a good support in multiple window system backends.

I'm not familiar with emacs-mac, so I can't tell anything about it before I dig into their code.

BTW, I used some code of feature/pgtk as references while implementing webrender's counterpart functions. 😄

@black7375
Copy link
Contributor Author

Good news!!
It would be great if Linux supports webrender + pgtk.

--with-mac-metal in emacs-mac seems to be able to collide.

@harryfei harryfei pinned this issue May 4, 2021
@shaunsingh
Copy link

shaunsingh commented Jun 24, 2021

Firstly, thanks for the great project! It struggles to build on my m1 machine, but I reckon thats due to upstream issues out of your control. On my older laptop it runs much better than emacs-28!

Just some clarification on emacs-mac and the benefits/drawbacks (as well as those discussed here: #99)

The biggest improvement is the application-side double buffering with metal

Emacs Mac actually disables this option by default, since it doesn't offer any improvement over openGL. The double-buffering works under openGL as well, so you can remove metal if it collides.

Touchpad gesture support (can't verify), Better clipboard/dnd support (?), Better support for the right ⌘ and ⌥ keys (?)

Although there is better touchpad gesture support, the clipboard and cmd/alt keys are about the same for stock and emacs-mac.

Personally, I believe that it isn't worth switching to emacs-mac, and having a significantly different codebase for both linux and macOS will just lead to parity issues down the line, as well as more bugs. I believe Emacs-plus (the base code itself is here, thats just the install formula) would be a better choice to work off of. It fixes most of the bugs you mention (including the double buffering issue).

@WingDust
Copy link

How about use emacs-ng in wsl2 experience

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants