fix pango crash
This commit is contained in:
parent
32c66cee87
commit
8e8e1b7614
@ -31,10 +31,15 @@ struct Font {
|
||||
static Font getFont()
|
||||
{
|
||||
auto fontMap = pango_cairo_font_map_get_default();
|
||||
if (!fontMap) die("pango_cairo_font_map_get_default");
|
||||
auto fontDesc = pango_font_description_from_string(font);
|
||||
if (!fontDesc) die("pango_font_description_from_string");
|
||||
auto tempContext = pango_font_map_create_context(fontMap);
|
||||
if (!tempContext) die("pango_font_map_create_context");
|
||||
auto font = pango_font_map_load_font(fontMap, tempContext, fontDesc);
|
||||
if (!font) die("pango_font_map_load_font");
|
||||
auto metrics = pango_font_get_metrics(font, pango_language_get_default());
|
||||
if (!metrics) die("pango_font_get_metrics");
|
||||
|
||||
auto res = Font {};
|
||||
res.description = fontDesc;
|
||||
@ -43,7 +48,6 @@ static Font getFont()
|
||||
pango_font_metrics_unref(metrics);
|
||||
g_object_unref(font);
|
||||
g_object_unref(tempContext);
|
||||
g_object_unref(fontMap);
|
||||
return res;
|
||||
}
|
||||
static Font barfont = getFont();
|
||||
@ -68,6 +72,7 @@ Bar::Bar(Monitor *mon)
|
||||
{
|
||||
_mon = mon;
|
||||
_pangoContext.reset(pango_font_map_create_context(pango_cairo_font_map_get_default()));
|
||||
if (!_pangoContext) die("pango_font_map_create_context");
|
||||
for (auto i=0u; i<tagNames.size(); i++) {
|
||||
_tags.push_back({ ZNET_TAPESOFTWARE_DWL_WM_MONITOR_V1_TAG_STATE_NONE, 0, 0, createComponent(tagNames[i]) });
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ void setlayout(Monitor &m, const Arg &arg);
|
||||
void tag(Monitor &m, const Arg &arg);
|
||||
void toggletag(Monitor &m, const Arg &arg);
|
||||
void spawn(Monitor&, const Arg &arg);
|
||||
[[noreturn]] void die(const char *why);
|
||||
|
||||
// wayland smart pointers
|
||||
template<typename T>
|
||||
|
@ -55,7 +55,6 @@ static void cleanup();
|
||||
static void requireGlobal(const void *p, const char *name);
|
||||
static void waylandFlush();
|
||||
[[noreturn]] static void diesys(const char *why);
|
||||
[[noreturn]] static void die(const char *why);
|
||||
|
||||
wl_display *display;
|
||||
wl_compositor *compositor;
|
||||
|
Loading…
Reference in New Issue
Block a user