<gog>
as in wo, man you expect me to read all that hogwash?
<moon-child>
didn't some version of man print a funny message if you tried to run 'man woman'?
<gog>
yeah
<gog>
programmer humor is very on/off
<klange>
The classic version is just the message a particular old version of `man` printed for a non-existent topic.
<gog>
"no manual entry for `woman'"
<gog>
or smth
heat has quit [Remote host closed the connection]
<dh`>
geist: you need to be able to find all the pages; indirecting via an object is fine but then you still need a list of the address spaces and offsets an object appears in
<dh`>
and doing it that way gets complicated if/when the objects are copy-on-write
<blockhead>
apropos
<geist>
dh`: yep.
[itchyjunk] has quit [Remote host closed the connection]
<geist>
that's the O(N) if there's not an assist
<geist>
page A belongs to object S at offset Y
<geist>
object S is mapped by N regions in various address space with various subsets of the object
<geist>
thus there are up to N mappings of the same page
<geist>
if there's not a data structure to track individual page mappings there's no choice but to iterate all the mappings in all the aspaces to shoot down/modify the mapping
<dh`>
right and that's awful
<dh`>
locking horror as well as being nonperformant
<geist>
could do a simple boolean that tracks if *any* mapping exists, and that may actually help in most cases
<geist>
not as terrible as it sounds since most pages belong to objects mapped once
gioyik has quit [Remote host closed the connection]
gioyik has joined #osdev
<nomagno>
Hello! I'm looking into options for retargetting a C compiler for my custom architecture. The architecture does not support many features in a meaningful way, namely floats and has no call stack, but I can deal with disabling that myself. Any recommendations for a C compiler that is (very easily) retargetable and compiles C to text assembly?
<nomagno>
I've never really done this before, I've looked into tcc but it is architecture in such a way generating text assembly seems unsuitable
<nomagno>
And GCC is simply way too big
<gog>
yeah TCC is pretty specific to x86. what about a clang/llvm backend?
<moon-child>
tcc supports a bunch of architectures
<nomagno>
^
<moon-child>
riscv and arm at least
<gog>
oh it does? last i read it was x86 and x86_64
<nomagno>
It just isn't designed to have a text assembly step
<gog>
til
<gog>
i see
<moon-child>
nomagno: I am told retargeting gcc is fairly painless
<moon-child>
nomagno: you may also wish to look into lcc, which was specifically designed to be very retargetable
<nomagno>
I'm not sure it would be less effort to retarget LLVM/GCC than to hamfist text assembly into tcc
<nomagno>
No. I am sure it would be more effort :P
<nomagno>
LCC is noncommercial, unfortunately
<moon-child>
regarding tcc, adding textual assembly seems very practical. Just add it as a new object file abstraction
<nomagno>
I might give tcc a go geah
<moon-child>
nomagno: I am told this by somebody who also targets his own cpu. More effort, maybe, but very feasible
<nomagno>
Yeah it doesn't sound like a bad idea, actually
<moon-child>
(though I am curious why it needs to be textual)
<nomagno>
My CPU is very non-standard in that it is a perfect crossover between a 6502 and a virtual machine meant for scripting, so it doesn't even have registers
<moon-child>
sure. But presumably its machine instruction format is not textual
<nomagno>
moon-child: Honestly, I didn't implement a machine code interpreter in the VM yet
<nomagno>
Its formally specified
<moon-child>
I see
<nomagno>
Just not implemented
<moon-child>
that seems like a higher priority than getting a c compiler going :P
<nomagno>
Probably :D
<nomagno>
It actually maps directly to the assembly (the machine code)
<nomagno>
So it would be an hour or two's worth of time. Will do it tomorrow probably
<nomagno>
In actuality, I think the machine code maps directly to my current data structure, a single uint8_t for the instruction storage and a fixed number of operands from 0 to 3, depending on the instruction itself. Yeah this would be like 10 minutes :D
<moon-child>
please be self-synchronizing
<nomagno>
Hm?
<nomagno>
What does that mean in this context?
<moon-child>
that, given an arbitrary byte offset into some code, you can meaningfully determine whether it's at the beginning or the middle of an instruction
<moon-child>
and if the latter where the next instruction is
<moon-child>
e.g. all initial bytes start with 1, all continuation bytes start with 0
<dh`>
re tcc, there are several things called tcc and I think the scroll is talking about more than one of them at a time
<nomagno>
moon-child: Well the operands are two bytes and the instructions one, so that's not possible
<moon-child>
dh`: at any rate, both of the tccs I know of target multiple architectures
<moon-child>
nomagno: yes, but in the machine encoding, it's just a stream of byte
<moon-child>
s
<nomagno>
I know
<nomagno>
But, like, I don't think you can actually unambiguously do what you propose unless I add some serious padding
<moon-child>
one bit per byte is not that bad
Oli has quit [Ping timeout: 256 seconds]
<moon-child>
and it can be made more efficient
<nomagno>
I would need to have 17-bit words vs previous average 12-bit words
Oli has joined #osdev
<moon-child>
why?
<nomagno>
(8, 16, 16, 16... More like 15 actually. Not that space inefficient)
<nomagno>
moon-child: The machine code consists of, specifically, a nibble for argument marking, a nibble for the actual instruction, then based on the instruction 0-3 2-byte operands
<nomagno>
An instruction can be (B), (B BB), (B BB BB), or (B BB BB BB)
<nomagno>
The value of the lower nibble of the first byte determines the number of operands that follow, because instructions are fixed length
<moon-child>
what is argument marking?
<moon-child>
in any event, you can sacrifice a bit from the instruction nibble, and have an 'extended instruction' op
<nomagno>
The upper nibble contains an encoding to identify which operands of the following are pointers, which are literal, and which are addresses.
<moon-child>
ok
<moon-child>
(what's the difference between a pointer and an address?)
<dh`>
in an architecture where the second and subsequent fetch units are immediate values, using a bit to mark them as subsequent words really cuts into things
ElectronApps has joined #osdev
FreeFull has quit []
pretty_dumm_guy has quit [Quit: WeeChat 3.4]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
smeso has quit [Quit: smeso]
smeso has joined #osdev
gioyik has quit [Remote host closed the connection]
gioyik has joined #osdev
Matt|home has joined #osdev
wand has quit [Remote host closed the connection]
wand has joined #osdev
wand has quit [Remote host closed the connection]
wand has joined #osdev
heat has quit [Remote host closed the connection]
ns12 has left #osdev [bye]
sdfgsdfg has quit [Quit: ZzzZ]
ZombieChicken has joined #osdev
<gorgonical>
Sometimes I wonder how my advisor tolerated me during the work on my first paper... I just have gone back and looked at the "clever" work I did for workqueues on the hypervisor to solve a problem when migrating VMs, especially rescheduling timers. Was setting init count to 0 after printing what I was gonna set it to...
<gorgonical>
"Why is the timer not firing???" Because I disabled it.
<sham1>
Probably because it was your first paper
sdfgsdfg has joined #osdev
<gorgonical>
I hope one day to pay that patience forward
gioyik has quit [Quit: WeeChat 3.3]
biblio has joined #osdev
* gog
mews
<zid>
swem
<sham1>
Puwr
* gog
slides a coffee to zid
ElectronApps has quit [Remote host closed the connection]
<zid>
ooh nice
<zid>
I'll go find my bag of sugar to tip it into
<zid>
tasty brown slush
<gog>
ah my bad i forgot you like your sugar with coffer
<gog>
i was having dreams about data structures
<zid>
eww
<zid>
nightmares suck
<gog>
better than the usual chaos that awaits me in my sleep tbh
<zid>
I don't dream so it's fine
<zid>
I have all my nightmares while awake
vai has joined #osdev
<vai>
noon everyone from Finland
<gog>
góðan daginn
gog has quit [Quit: byee]
gog has joined #osdev
vdamewood has joined #osdev
<sham1>
vai: päivää
<zid>
poro poro poro
vai has quit [Ping timeout: 256 seconds]
xenos1984 has quit [Remote host closed the connection]
xenos1984 has joined #osdev
<nomagno>
dh`: What do you mean by "cuts into things"?
dormito has quit [Quit: WeeChat 3.3]
GeDaMo has joined #osdev
xenos1984 has quit [Remote host closed the connection]
xenos1984 has joined #osdev
xenos1984 has quit [Quit: Leaving.]
dormito has joined #osdev
dormito10 has joined #osdev
dormito has quit [Ping timeout: 240 seconds]
nur has quit [Quit: Leaving]
sdfgsdfg has quit [Quit: ZzzZ]
the_lanetly_052 has joined #osdev
the_lanetly_052 has quit [Read error: Connection reset by peer]
xenos1984 has joined #osdev
ravan_ has joined #osdev
the_lanetly_052 has joined #osdev
ravan has quit [Ping timeout: 256 seconds]
biblio_ has joined #osdev
biblio has quit [Ping timeout: 240 seconds]
biblio_ is now known as biblio
Oli has joined #osdev
sdfgsdfg has joined #osdev
ahalaney has joined #osdev
dormito10 is now known as dormito
gog` has joined #osdev
sdfgsdfg has quit [Quit: ZzzZ]
zaquest has quit [Remote host closed the connection]
zaquest has joined #osdev
bauen1 has joined #osdev
Jari-- has joined #osdev
ravan_ is now known as ravan
<gog`>
mew
dude12312414 has joined #osdev
dude12312414 has quit [Remote host closed the connection]
<Jari-->
new day for osdeving
dude12312414 has joined #osdev
pretty_dumm_guy has joined #osdev
pretty_dumm_guy has quit [Client Quit]
<sham1>
Okay, so instead of professionally ignoring libgcc I now just patch the relevant configure file because PIC is stupid and I still don't understand the multilib stuff enough to do this stuff elegantly
<sham1>
Damn it
pretty_dumm_guy has joined #osdev
<Oli>
Multilib, in the sense of having multiple C libraries targetting different architectures, software may link at?
<Oli>
be*
<sham1>
libgcc
<sham1>
Yeah
<sham1>
Since you can have different versions based on the flags you pass GCC
<sham1>
And I wish to do the sane thing and relocate my kernel to the last 2 gibibytes of the 64-bit address space. And that requires mcmodel=kernel in order to have the compiler generate proper code. Now a problem is that for whatever reason, mcmodel=kernel and PIC cannot coexist, so one needs a way around that
<sham1>
The multilib options of GCC can be used for this and they enable stuff like easily disabling red zone as necessary from libgcc. Disabling PIC however is not as simple
<klange>
I've found x86-64 code is far less likely to even produce calls into libgcc. I have none in my kernel and only need one libgcc_s for userspace.
<sham1>
It builds multiple variants. The problem is that by default for AMD64, libgcc is built with PIC and that can't be easily disabled when building with mcmodel=kernel. I've managed to make it so that the combination with mcmodel=kernel also passes fno-pic, but the command line also passes fpic when building that version of libgcc. And because the fpic flag comes after the fno-pic, it has precedence
<sham1>
So I just took the sledgehammer approach of just disabling PIC from libgcc completely
<sham1>
And yeah, one probably doesn't need libgcc on AMD64 as much as on iX86, but it still has useful stuff like stack unwinding which some might like. And besides, I could just not have libgcc for kernel, ez. But at this point it's personal
<klange>
My journey to building the shared object for userspace was like that.
<sham1>
It *could* be easier with clang because while that also relies on compiler-rt, it has a better way of doing it of just emitting the things as necessary
srjek has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<sham1>
Err, actually no
<gog`>
i can't think of one symbol that gets pulled from libgcc on mine, but all of my objects are built with -fpic anyhow
<sham1>
I could go without libgcc and then just do it for userland once it's necessary but I suppose I could also at the same time try to investigate why this kind of a configuration is not supported
blockhead has quit []
mahmutov has joined #osdev
k0valski18 has joined #osdev
gog` has quit [Quit: byee]
heat has joined #osdev
<heat>
is there any argument for static device numbers in the age of automatic devfs?
<gog>
static across boots or while the device is connected?
<heat>
across boots, essentially as part of the abi
<sham1>
I suppose that it depends on what you decide the static numbering on
<sham1>
Order?
<heat>
per Linux, almost randomness :P
<heat>
unix has this historical artifact where a driver can choose to occupy a specific major:minor as it chooses
<heat>
for example the traditional Linux mem character device (/dev/mem, /dev/ports, zero, null, etc) have static device numbers
<heat>
across boots, across all machines
<gog>
that makes sense for device nodes that are required to be present for udev
<heat>
but udev also uses the automagical devtmpfs
<gog>
the year of the linux desktop
<heat>
BSD *only* has an automagical devtmpfs
<heat>
i'm trying to understand if there's an actual reason for static device numbers other than m'uh 1970 unix
<sham1>
Well 1970 UNIX is as good a reason as any
<heat>
if its the only reason though, you better drop it
<gog>
unix considered harmful
<heat>
hmmm is SVR4 source still under copyright
<gog>
gotta wait 70 years until the last author dies
<heat>
i found sauce in archive.org but it says its UNPUBLISHED PROPRIETARY SOURCE CODE
<gog>
disregard that
the_lanetly_052 has quit [Ping timeout: 240 seconds]
<kingoffrance>
depends if you trust john titor or not
<gog>
i don't trust anybody with a name like "titor"
<sham1>
What about boobor
<gog>
booba
<sham1>
Booband
<gog>
hootxors
<sham1>
Just need to be careful with the hyphen
<zid>
I saw a girl with a booband once
<zid>
it's like a monobrow but not
<gog>
my boobs are NULL pointers
<zid>
flat is justice
the_lanetly_052 has joined #osdev
<gog>
:<
[itchyjunk] has joined #osdev
<zid>
I'm very interested in hydrodynamics, what can I say
<gog>
sure you are
* gog
pats zid
<zid>
name me one boat with huge boobs
<gog>
you got me there
biblio has quit [Quit: Leaving]
the_lanetly_052 has quit [Ping timeout: 256 seconds]
<heat>
well this is a bummer
<heat>
apparently someone can technically sue me
<heat>
i guess I always found early bsds more interesting that svr4
<heat>
didn't even want to see svr4
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
biblio has joined #osdev
rustyy has quit [Quit: leaving]
[itchyjunk] has quit [Ping timeout: 240 seconds]
<Oli>
I find myself appealed by DragonFly BSD, mainly because dragons are my biggest passion.
rustyy has joined #osdev
[itchyjunk] has joined #osdev
<sham1>
BSDs are quite nice from engineering standpoint
<heat>
i'm kind of interested in trying to convert old BSDs (like really old) into compilable stuff
dude12312414 has joined #osdev
<Oli>
After reading at your comment about BSDs, sham1, I looked up and read the features of FreeBSD listed in the article that the next hyperlink leads at: https://en.wikipedia.org/wiki/FreeBSD#Features by I have so far, I agree with you.
<bslsk05>
en.wikipedia.org: FreeBSD - Wikipedia
mahmutov has quit [Ping timeout: 256 seconds]
<gog>
mew
<zid>
wem?
<gog>
ʍǝɯ
_xor has quit [Read error: Connection reset by peer]
<Oli>
ɯǝʍ
<zid>
gog when are you getting me a girlfriend?
<gog>
lmao why would i help you with that
<zid>
why would you not, I'm such an amazing catch, like one of those blobfish
<gog>
if i'm getting anybody a girlfriend it's myself
<zid>
I thought you had a waifu
<gog>
i do
<zid>
harem time?
<gog>
eventually
<zid>
ganbatte
_xor has joined #osdev
_xor has quit [Read error: Connection reset by peer]
_xor has joined #osdev
<Oli>
A blobfish sounds very confidant, if SSHv2 is any hint.
<gog>
i do know a lot of girls i just don't know if you'd be their type
<zid>
useless is a very attractive type
<gog>
i meant that they're all lesbians :p
<zid>
well half of them will be exactly *my* type, if that helps
<Bitweasil>
zid identifies as... ;)
<zid>
I'd be a lesbian if I had the requried heavy industrial equipment
<Bitweasil>
Hey, it's 2022, you don't need to be so needlessly constrained by such things! Just claim you are what you feel inside and then argue with people who claim that, no, they're not interested in *that* kind of equipment.
<Oli>
If I had that heavy indistrial equipment I would be a dragon
<Bitweasil>
I... do want a backhoe.
<Bitweasil>
They're $40k used. :(
<gog>
wow
<Bitweasil>
The good news is that they also are $40k in 5 years of use.
<zid>
I don't think they appreciate being called hoes or having prices on them Bitweasil
<Bitweasil>
Once a piece of equipment gets old enough, it's just long term rental.
<Bitweasil>
:)
<nomagno>
If I had the necessary heavy industrial equipment I'd destroy all copies of the Berne convention in existence.
<nomagno>
... And all relevant legislation
<heat>
woah I got BSD 4.0's ed to compile in linux
<heat>
posix is magic
gog has left #osdev [#osdev]
<zid>
byuegog
<heat>
i see most of these files assume string literals are writable
<heat>
:(
<zid>
gcc has an option for that I think at least?
<Bitweasil>
Hm, $32k for a 1998 Cat over in Montana...
<heat>
zid, just a warning
<heat>
from what I searched, only gcc 3 had a way to turn on writable strings
<zid>
ah it's gone? okay
<heat>
sad :(
[_] has joined #osdev
[_] has quit [Client Quit]
<Oli>
Good bye, gog; miss I will, textual interactions of herein.
<bauen1>
heat: what prevents you from adding a small mmap call in _start to make .text read-write-execute goodness ?
xenos1984 has quit [Read error: Connection reset by peer]
<froggey>
Bitweasil: hey could you not be transphobic here, thanks
<Oli>
Wait, I was referring to heavy industrial equipment in the sense of a shape changing machine
<bauen1>
add a > /dev/null to your gcc commands and you're good to go
<Bitweasil>
Pretty sure I wasn't.
<Bitweasil>
But OK.
<Bitweasil>
Bye.
<heat>
bauen1, disgust?
<zid>
<Bitweasil> Hey, it's 2022, <-- that one *does* come across as offensive, if you've seen any of the anti-trans memery
xenos1984 has joined #osdev
<bauen1>
heat: some times you have to ignore your moral values in search for the greater good /s
<Bitweasil>
I don't know what you're talking about, but I'll leave.
<Bitweasil>
Once I figure out how to get ZNC to do that.
<zid>
hah
mahmutov has joined #osdev
<zid>
There was just a bunch of stuff with a similar tone
<Bitweasil>
Sorry for offending... whoever, I'll depart from IRC.
Bitweasil has left #osdev [Leaving]
<zid>
if you didn't know then now you do
<froggey>
well then
<Oli>
Which is the aesop?
<Oli>
Perhaps best to keep ourselves united by operating system development affinity, and keep other topics elsewhere?
<sham1>
Agreed
<sham1>
Although if it doesn't get too incendiary, I feel that it's fine to mention this stuff if it doesn't totally just derail everything
_xor has quit [Read error: Connection reset by peer]
_xor has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
heat_ has quit [Ping timeout: 268 seconds]
gareppa has joined #osdev
gareppa has quit [Remote host closed the connection]
dude12312414 has quit [Remote host closed the connection]
dude12312414 has joined #osdev
srjek has quit [Ping timeout: 240 seconds]
rb has quit [Ping timeout: 256 seconds]
rwb has joined #osdev
rwb is now known as rb
rb has quit [Remote host closed the connection]
rwb has joined #osdev
Teukka has quit [Read error: Connection reset by peer]
Teukka has joined #osdev
Lumia has joined #osdev
heat_ has joined #osdev
<heat_>
HELLO
heat_ is now known as heat
rwb is now known as rb
<sham1>
Things are about to get heated
<heat>
we have achieved comedy
<sham1>
yes
bgs has quit [Ping timeout: 256 seconds]
<geist>
good afternoon folks
<zid>
I'm actually a sea cucumber
<heat>
something I found out today: openbsd and netbsd have plenty of places protected by a big kernel lock
<geist>
yah. i think i discovered a few years ago that netbsd still fires a PIT timer on cpu 0 and then a cross cpu IPI to run timer events on secondary cpus
<sham1>
How do more modern systems do that
<clever>
sham1: arm supports per-core timers, that always fire core-local interrupts
<sham1>
Like when they get a timer interrupt in one of the cores. Or would you just have one timer per core
<heat>
one timer per core
<sham1>
And well, x86 does have the local APIC
<heat>
in x86 you have the local APICs, which are your interrupt "chips" per core, and each lapic has a timer that fires independently
<heat>
s/core/thread/
<heat>
anyway its kind of sad how the other BSDs are so behind wrt FreeBSD
bgs has joined #osdev
<sham1>
Not behind
dormito10 has joined #osdev
dormito has quit [Ping timeout: 256 seconds]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
dormito has joined #osdev
dormito10 has quit [Ping timeout: 240 seconds]
GeDaMo has quit [Remote host closed the connection]
elastic_dog has quit [Quit: elastic_dog]
elastic_dog has joined #osdev
mahmutov has quit [Ping timeout: 240 seconds]
kaitsh has joined #osdev
dormito has quit [Quit: WeeChat 3.3]
bgs has quit [Read error: Connection reset by peer]
bgs has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
srjek has joined #osdev
kaitsh has quit [Quit: WeeChat 3.3]
ahalaney has quit [Quit: Leaving]
<heat>
installing svr4 onto virtual box
<heat>
this is fun
<sortie>
Ah, a great vintage
<heat>
>why did I just try to run gcc
Lumia has quit [Quit: ,-]
ZombieChicken has quit [Quit: WeeChat 3.4]
<heat>
im going to start distributing my OS as 30 different 1.44MB floppies
<Oli>
A NFO with a nice ASCII art would be a cherry on the top for me.
<geist>
i distinctly remember some time in college going down to the computer lab with a box of 20 floppy disks and making a whole set for slackware
<geist>
why i had to go to the lab i dont know, seems i would have had at least one computer in my dorm room to punch out the disks
<geist>
maybe it was occupied doing something or my roommate was trying to sleep or something
immibis has quit [Ping timeout: 252 seconds]
sdfgsdfg has joined #osdev
<heat>
1) this doesn't come with a C compiler 2) this doesn't come with man pages
<heat>
commands also lack --help
<j`ey>
good luck!
<heat>
this is genuinely way worse than my OS
<kazinsal>
which svr4 system is this
<heat>
2.1
<kazinsal>
sunos?
immibis has joined #osdev
<heat>
no this is the actual svr4 I think
<kazinsal>
wait, no, sunos was 4.2BSD+SysV IPC
<Ameisen>
Odd question, but is there a list of all, like, x86 instructions somewhere in text format so I can jam them into a code colorizer for a web page :|
ahlk has joined #osdev
<heat>
uname -a = svr4 svr4 4.0 2.1 i386 386/AT
<sham1>
There probably is not a list of them
<heat>
no bsd heresy here
<sham1>
Since, well, the mnemonics do depend on the assembler to a certain extent
<moon-child>
Ameisen: just scrape them from nasm dat file or some such?
mavhq has joined #osdev
* moon-child
doesn't get such luxuries, making his own assembler; must transcribe everything by hand from the manuals. Why do I subject myself to such torture?
<sham1>
Of, you are doing an assembled
<sham1>
Assembler
<sham1>
x86 and AMD64 I presume
<sham1>
If so, which syntax
<moon-child>
yea
gog has joined #osdev
<moon-child>
intel
<Ameisen>
pff, 'which syntax'
<Ameisen>
as though there's a syntax that's not Intel.
<heat>
at&t >> intel
<sham1>
Intel with prefixes > Intel without prefixes > AT&T
<sham1>
Unless you're instead just shifting AT&T by intel in which case fair
<zid>
as if there is a syntax that's not intel
<zid>
but without the word 'ptr'
<sortie>
I use the standard assembler as(1)
<moon-child>
I don't like the prefixes, but their use is at least _justified_
<klange>
I just miss the community, even if I'm not going to osdev myself.
<klange>
I did try to do something this morning, I partially implemented non-lazy window resize in my compositor, but then I found I have terrible problems with repeated signal delivery when I was trying to resize a terminal with my editor in it, so I'm back to just thinking I'll quit the whole thing.
<geist>
ah give it time. burning out on it is always difficult
<geist>
also i was just thinking about that, how uis combine multiple input events
<geist>
i guess there's a whole scheme there so you dont end up with the mouse pointer dragging behind the app thing
<klange>
I did get most apps to work nicely, though I have some weirdness around resizing from the top/left that's a remnant of how I was drawing lazily resized windows
<klange>
I just only sent resize events when the app had already fully responded to one, or when the resize was complete.
<klange>
On the app side, one of my demo apps is a color picker that is a rewrite of one I made with Cairo in Python a while back. It's C now, but it's my own shoddy graphics routines so it's still pretty slow. My trick there was to consume all pending input events before redrawing, which would effectively drop any mouse movements that it was too slow for.
<klange>
Looking at nakst's essence again, what a lovely UI and so very responsive. Really puts my shit to shame.
<zid>
yea there's always the annoying choice between slomo and dropped events
<zid>
and.. it's always exactly the opposite of what you want as a user, somehow :p
<moon-child>
this is why I'm deeply dissatisfied by software rendering
<moon-child>
but ... I also don't want to spend who-knows-how-many-months ripping out my hair making graphics drivers
<moon-child>
_a_ graphics driver. That won't work for anybody else
<zid>
it's not even a 'who renders' thing, it's just a choice you make a shit load of times in all sorts of places