SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Xとかオワコンじゃね…
 っていう男の人って
自己紹介
青田直大 (あおた なおひろ)
@naota344
Software Designで
Linuxカーネルについて連載してます
あとGentooとか
デモ

       X上で
Wayland Compositorの
     Westonを
       動かす
デモ


自作Waylandクライアント
Wayland
Waylandはプロトコル
オブジェクト
 wl_display
   コアオブジェクト
 wl_shm
   クライアントとのメモリ共有
 などなど
メッセージ
 UNIXドメインソケットで送られる
Waylandのメッセージ
32bit: オブジェクトのID
16bit: オペレーションコード
16bit: メッセージ長 (byte数)
残り: 引数
 32bitにalign
 文字列は
   32bit:文字列長
   残り: 文字列+'0'+padding
Waylandクライアントの流れ
サーバに接続
必要なオブジェクトを「作る」
メモリ領域をサーバと共有する
画像データを書く
更新したよ、とリクエストを送る
Compositorに接続
UNIXドメインソケット: wayland-0
wl_display globalイベント
 サーバ側のオブジェクトが教えてもらえる
    オブジェクトID
    インタフェース名
    バージョン
オブジェクトの「作成」
クライアント側にオブジェクトを作る
wl_display bindリクエスト
 globalイベントで教えてもらったID
 インタフェース名
 バージョン
 クライアント側で割り当てるID
wl_surface
画面に描画されるデータ
wl_compositor create_surfaceリクエストで作成
wl_shell_surface
wl_shell get_shell_surfaceリクエストで
 wl_surfaceと結びつける
popupとかmoveとかresizeとかできるように
wl_shm_pool
クライアントとサーバで共有するメモリのプール
ここからbufferを確保してく
wl_shm create_poolリクエスト
 wl_shm_poolに当てるID
 ファイルデスクリプタ
 サイズ
wl_buffer
ピクセルデータが入るbuffer
wl_shm_pool create_bufferリクエストで作成
 wl_bufferに割り当てるID
 offset
 width
 height
 stride: 次のrowまでのbyte数
 format
    0: ARGB8888
画像データを書く
png画像をARGB8888形式で
wl_shmで共有してるファイルに書く


                    wl_shm_po
                         ol
                         File
画像データを書く
png画像をARGB8888形式で
wl_shmで共有してるファイルに書く


                      wl_shm_po
                           ol
           wl_buffe
               r           File
画像データを書く
png画像をARGB8888形式で
wl_shmで共有してるファイルに書く


                          wl_shm_po
                               ol
               wl_buffe
  wl_surface                   File
                   r
画像データを書く
png画像をARGB8888形式で
wl_shmで共有してるファイルに書く


                          wl_shm_po
                               ol
               wl_buffe
  wl_surface                   File
                   r



                          ここにデータ書く
buffer更新メッセージ
wl_surface damageリクエスト
 x
 y
 width
 height
描画してくれる!
実装
Haskell
  ghc-7.4.1
  conduit-0.4.0.1
  network-conduit-0.4.0
  codec-image-devil-0.2.3
問題点
好きなIDを指定してね!
 サーバがSEGV
intがうまく渡せてない時がある?
 変な数字になる
Haskellだけど実装がアレ
Fdをメッセージと一緒に渡すために
networkにpatchが必要
なんか最初に画像が乱れる
自分も書きたい… !
weston/clients/ にいろんなデモが
wayland/protocol/wayland.xmlに
プロトコルの定義が

Weitere ähnliche Inhalte

Ähnlich wie Xとかオワコン?

CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworksCSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworksNaoki Matsuda
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたのでKenichiro MATOHARA
 
ngx_small_light at 第2回闇鍋プログラミング勉強会
ngx_small_light at 第2回闇鍋プログラミング勉強会ngx_small_light at 第2回闇鍋プログラミング勉強会
ngx_small_light at 第2回闇鍋プログラミング勉強会Tatsuhiko Kubo
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?Daichi Isami
 
Yapcasia2012 ltthon
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthonturugina
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验Ryan Poy
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashYasunobu Ikeda
 
Streamlitを用いた音響信号処理ダッシュボードの開発
Streamlitを用いた音響信号処理ダッシュボードの開発Streamlitを用いた音響信号処理ダッシュボードの開発
Streamlitを用いた音響信号処理ダッシュボードの開発Hiromasa Ohashi
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - SORACOM, INC
 
FileReader and canvas and server silde
FileReader and canvas and server sildeFileReader and canvas and server silde
FileReader and canvas and server sildeNet Kanayan
 
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶYuta Kitagami
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 
Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2edy555
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangYoshiki Shibukawa
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語GoYoshifumi Yamaguchi
 
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)marsee101
 

Ähnlich wie Xとかオワコン? (20)

CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworksCSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたので
 
ngx_small_light at 第2回闇鍋プログラミング勉強会
ngx_small_light at 第2回闇鍋プログラミング勉強会ngx_small_light at 第2回闇鍋プログラミング勉強会
ngx_small_light at 第2回闇鍋プログラミング勉強会
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?
 
Yapcasia2012 ltthon
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthon
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验
 
Silverlightの今
Silverlightの今Silverlightの今
Silverlightの今
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlash
 
Streamlitを用いた音響信号処理ダッシュボードの開発
Streamlitを用いた音響信号処理ダッシュボードの開発Streamlitを用いた音響信号処理ダッシュボードの開発
Streamlitを用いた音響信号処理ダッシュボードの開発
 
Canvas勉強会
Canvas勉強会Canvas勉強会
Canvas勉強会
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 -
 
DRBD9とdrbdmanageの概要紹介
DRBD9とdrbdmanageの概要紹介DRBD9とdrbdmanageの概要紹介
DRBD9とdrbdmanageの概要紹介
 
FileReader and canvas and server silde
FileReader and canvas and server sildeFileReader and canvas and server silde
FileReader and canvas and server silde
 
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶ
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 
Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
 
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
 

Xとかオワコン?