Skip to content

Instantly share code, notes, and snippets.

View gist:8629159
use "../core"
enum Token
None
Unknown
Id
struct Lexer
struct State
lexer *Lexer
@Zoxc
Zoxc / gist:5765678
Last active Dec 18, 2015
Rendering on multiple threads with Wayland subsurfaces
View gist:5765678
mutex commit
atomic<int> render_complete_count
signal resizing_complete
apply_pending_state(surface) {
wl_surface_attach(surface, ...)
wl_surface_damage(surface, ...)
}
@Zoxc
Zoxc / gist:5566293
Last active Dec 17, 2015
Syntax for variable and field declarations
View gist:5566293
Trivial:
Type trailing with colon
global, other_global: int
yet_another_global: () -> string
func()
a, c: int
b := 4
Type trailing and var keyword
@Zoxc
Zoxc / gist:5270635
Created Mar 29, 2013
OpenGL font rendering
View gist:5270635
#include <stdio.h>
#include <math.h>
#include <swl.h>
#include "gles.hpp"
#include <ft2build.h>
#include FT_FREETYPE_H
FT_Library library;
@Zoxc
Zoxc / gist:5153662
Created Mar 13, 2013
Named constructors with new and delete as functions
View gist:5153662
# class is Scala or Haskell like traits or type classes
class Constructor[*Args] # Args is variadic
{
type Constructed
static construct(obj: *Constructed, args: Args): unit
}
class Destructable # All types have instance of this
{
View PoE NPL
struct PoEEmpty
{
}
[DataTypeByteOrder = 1] UnsignedNumber PoEU16
{
Size = 2
}
[DataTypeByteOrder = 0] UnsignedNumber PoEU16LE
@Zoxc
Zoxc / gist:3681678
Created Sep 9, 2012
Wayland Color Management
View gist:3681678
- Reads from client buffers in weston must be converted to linear gamma. Client buffers can be presented to weston with sRGB or linear gamma.
The server-side wl_drm will use sRGB formats to convert it for weston if that's available.
Should the existing SHM/DRM formats be declared as having sRGB gamma? If so, should the premultiplied color format be linear_to_srgb(color * alpha) (the format OpenGL and pixman uses for sRGB)?
How should you pass on whether or not the compositor prefers linear gamma to wayland_drm_init in mesa? (This is needed to disable gamma correction for performance reasons)
Options:
- Replace the eglQueryWaylandBufferWL, eglCreateImageKHR sequence with:
EGLBoolean eglSetupWaylandBufferWL(EGLDisplay dpy, struct wl_buffer *buffer, const EGLint *attrib_list, EGLint *format, EGLint *planes, EGLImageKHR *images);
- Call an eglSetupWaylandBufferWL function before doing anything with a wl_buffer (but keep the eglQueryWaylandBufferWL, eglCreateImageKHR sequence)
- Add eglDisplayAt
@Zoxc
Zoxc / injector.cpp
Created Jun 10, 2012
DLL Injector for x86/x64
View injector.cpp
#pragma once
#include <SDKDDKVer.h>
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <windows.h>
#include <tchar.h>
#include <shellapi.h>
#include <string>
#include <sstream>
#include <functional>
@Zoxc
Zoxc / gist:2585797
Created May 3, 2012
Parsing error comparison
View gist:2585797
> ::hi()
mirb:
Parsing Error: Can only reference constants when leaving out the lookup expression (Use ::Object to access non-constants)
Input[1]: ::hi()
~~~~~~
mri:
SyntaxError: (irb):6: syntax error, unexpected tIDENTIFIER, expecting tCONSTANT
::hi()
^
@Zoxc
Zoxc / gist:2467851
Created Apr 23, 2012
Mirb Exception Reporting
View gist:2467851
> tap { raise "hi" }
RuntimeError: hi
in main.Kernel(Object)#raise("hi")
in main.#<Class:main>(Object)#main(main)
Input:1: tap { raise "hi" }
~~~~~~~~~~
in #<Proc:0x4c2048>.Proc#call(main)
in main.Object#tap()
in main.#<Class:main>(Object)#main()
You can’t perform that action at this time.