Skip to content

Instantly share code, notes, and snippets.

@jeremyz
Created December 12, 2012 06:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeremyz/4265607 to your computer and use it in GitHub Desktop.
Save jeremyz/4265607 to your computer and use it in GitHub Desktop.
inter process communication using ffi-efl and ecore_pipe
#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
require 'efl/native/ecore'
require 'efl/native/elm/elm_win'
require 'efl/native/elm/elm_bg'
require 'efl/native/elm/elm_label'
require 'efl/native/elm/elm_object'
include Efl::Native
elm_init 0, FFI::MemoryPointer::NULL
win_del = Proc.new { |data,evas_object,event_info|
elm_exit();
}
win = elm_win_add nil, "App name", :elm_win_basic
elm_win_title_set win, "Window title"
evas_object_smart_callback_add win, "delete,request", win_del, nil
bg = elm_bg_add win
evas_object_size_hint_weight_set bg, 1.0, 1.0
elm_win_resize_object_add win, bg
evas_object_show bg
lb = elm_label_add win
elm_object_part_text_set lb, nil, "Hello World"
evas_object_size_hint_weight_set lb, 1.0, 1.0
elm_win_resize_object_add win, lb
evas_object_show lb
evas_object_move win, 300, 300
evas_object_resize win, 200, 100
evas_object_show win
pipe_cb = Proc.new { |date,buffer,n|
elm_object_part_text_set lb, nil, buffer.read_string[0..n-1]
}
pipe = ecore_pipe_add pipe_cb, nil
pid = fork {
ecore_pipe_read_close(pipe);
[ "hello","dying","old","planet","earth"].each do |w|
sleep 1
ecore_pipe_write pipe, w, w.length
end
}
elm_run
ecore_pipe_del pipe
elm_shutdown
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment