Arquivo para a categoria 'GTK'

gthread – exemplo

A biblioteca glib possui uma abstração de threads, com uma API simples  e que se mantém a mesma em todos os S.Os suportados.

Exemplo de utilização: Link

O exemplo mostra uma utilização bem básica, sem necessidade de compartilhar memória e etc. Aplicações reais nem sempre são tão simples! Documentação oficial: Link

lgob – Bindings para Lua

A um ano atŕas, eu publiquei bindings para Lua das bibliotecas GTK+, cairo, entre outras, no http://oproj.tuxfamily.org . Decidi automatizar a tarefa, escrevendo um gerador de código que lê informações dos arquivos “.gir” do projeto gobject-instrospection e gera código para exportar classes, funções e enumerações.

O projeto foi nomeado como lgob (lua gobject), e está disponível (via svn) em: http://svn.tuxfamily.org/viewvc.cgi/oproj_oprojsvn/lgob/ .

As vantagens da nova abordagem incluem: uma maior cobertura da API, maior facilidade para mudanças, e geração de código para versões específicas.

Intel GM965 vs performance 2D

Com o novo Xorg 1.6, meus antigos problemas com a performance 3D da minha Intel GM965 (aka X3100) acabaram, mas a performance 2D continuava horrível.

Testando outras configurações pro Xorg, cheguei nesta:

Section “Device”
Identifier  “Card0″
Driver      “intel”
VendorName  “All”
BoardName   “All”
Option “AccelMethod” “exa”
Option “MigrationHeuristic” “greedy”
Option “ExaNoComposite” “true”

EndSection

OK. Os métodos de aceleração suportados são: XAA (antigo, substituido pelo EXA), o EXA (perofrmance 3D melhorada, mas por padrão gera artefatos em algumas aplicações  que usam Qt 4) e o UXA (suporte ao dri2, mas ainda está um pouco instável).

Se não me engano o EXA é usado por padrção, então até ai nenhuma mudança. O que realmente melhorou a performance 2D (e corrigiu alguns bugs) foi o “Option “MigrationHeuristic” “greedy”.

Para testes, usei o programa gtkperf. Antes, uma rodada com 100 repetições demorava 16 segundos. Com a nova configuração, passou para 5 segundos. A performance 3D aparentemente não foi alterada, mas também não testei muito.

Novo site

O novo wiki, agora utilizando o http://www.dokuwiki.org/ (que de ruim só tem o nome) já esta estruturado e contendo um primeiro esforço para documentar os projetos.

A wiki pode ser acessada pelo endereço http://oproj.tuxfamily.org.

Status dos projetos

Ontem o site onde hospedo meus projetos, http://oproj.tuxfanily.org, foi crackeado.
Removi tudo o que restou, e substitui o sistema de wiki. Agora estou escrevendo a documentação direto na wiki, mas ainda vai demorar algum tempo até que esteja tudo organizado.

Os releases dos projetos não foram prejudicados, pois estão em um repositório separado. E falando em releases, liberei hoje uma nova versão do lobj e do lgui. Salvo pequenas mudanças e correções de possíveis bugs, estas devem as últimas versões antes de uma versão estável.

lgui 0.13

Novidades:

- Troca do script de construção por um Makefile;
- Suporte ao GtkBuilder;
- Binding do GtkRecentManager e amigos;
- Novos exemplos;

Link.: http://oproj.tuxfamily.org

Screenshot de uma aplicação que utiliza lgui

Screenshot de uma aplicação que utiliza lgui

lgui 0.6 e ldraw 0.3

Obs.: Um pouco atrazado, pois já publiquei estas versões a um bom tempo, mas:

Uma nova versão dos bindings do GTK+2.0 para Lua (lgui) e do cairo (ldraw) estão disponíveis para download.
Alguns screenshoots:

ss1

ss3ss2

lgui: Bindings do GTK para Lua

(Atenção: Post antigo, houvera mudanças significativas no projeto).

A um tempo atrás, comecei a criar um binding do GTK para Lua. Atualmente, ele cobre 90% do que é realmente usado, e é compacto e simples (<60kbs, compilado como um módulo). Compilado e testado com GTK 2.12, para Linux e MS-Windows.
O código fonte já está no CVS. (não existe mais, ver http://oproj.tuxfamily.org)

-> Exemplo de uso:

#! /usr/bin/env lua

require(“lgui”)
lgui.export()

local window = windowNew()
local hbox = hboxNew(true, 5)
local b1, b2 = buttonNewFromStock(“gtk-ok”), buttonNewFromStock(“gtk-cancel”)

containerAdd(hbox, b1, b2)
containerAdd(window, hbox)

set(window, “title”, “Hello World”, “window-position”, WIN_POS_CENTER)

connect(window, “delete-event”, gtkQuit)
connect(b1, “clicked”, print, “Button 1 clicked!”)

widgetShowAll(window)
gtkMain()

-> Resultado:

SS