开源理念
深度操作系统的发展是站在上游社区的基础之上才能走到今天,除了我们自己开发了数百万行代码的原创开源项目外,我们深知只有秉承 "取之于开源,回馈予开源” 的开源理念,才能将我们自己的代码和功能改进回馈予上游开源社区,才能更好的推动全世界的开源运动向前不断发展。
上游贡献
下面是我们对上游社区的代码贡献补丁以及简要说明:
Wine:
深度科技Wine团队每天都会开发很多功能来完善Wine的API实现完整性,以更好的支持Windows应用在Linux上运行,包括QQ、迅雷、RTX等应用的支持都有deepin团队贡献的补丁,具体的贡献补丁如下:
wininet/tests: Check null pointer in InternetGetSecurityInfoByURLW
https://source.winehq.org/git/wine.git/commit/3f06a09604f8c2364dfbf6e6987d991f140544bc
winex11: Avoid deadlock when setting cursor.
https://source.winehq.org/git/wine.git/commit/48fb9d6a03a16e389b3d214d68356c52ad3310b9
wininet: Don't release connection too early.
https://source.winehq.org/git/wine.git/commit/6d6dd78e5dad164d1b313599f9afa5f65481d29d
user32: Make functions use display dc thread-safe
https://source.winehq.org/git/wine.git/commit/daa832f4bf265e459e17d487453f3cc112f6e567
kernel32/tests: Add tests for MultiByteToWideChar in DBCS codepage.
https://source.winehq.org/git/wine.git/commit/e776421232996729a0e350c31d56f696bd47e429
Metacity&Mutter:
深度窗口管理器是基于metacity和mutter开发的高级窗口窗口管理器,其中deepin-metacity是基于metacity之上开发的,deepin-wm是基于mutter之上开发的。在开发的过程中,发现了很多上游社区的bug和功能需要改进的地方,具体的补丁请见:
Emacs:
深度开发者之一王勇除了是Emacs中w3m-org 模块 (http://repo.or.cz/w/org-mode.git?a=blob_plain;f=lisp/org-w3m.el;hb=HEAD) 的作者外,还编写了众多的Emacs插件和维护了上百个Emacs插件的补丁。
Emacs插件:https://www.emacswiki.org/emacs/AndyStewart。
PyGTK:
在用Python + Gtk+开发图形应用的时候,深度科技团队发现pangocairo库在自绘字体的时候,pangocairo创建的layout对象不会销毁,最后会导致自绘界面的有严重内存泄露的情况,深度科技团队已经发送修复补丁至pygtk 上游修复此问题,下面是具体的补丁情况:
Index: pygtk-2.24.0/pangocairo.override
===================================================================
--- pygtk-2.24.0.orig/pangocairo.override 2012-04-14 01:40:59.568703232 +0800
+++ pygtk-2.24.0/pangocairo.override 2012-04-14 01:41:05.792703324 +0800
@@ -119,10 +119,15 @@
_wrap_pango_cairo_create_layout(PyGObject *self)
{
PangoLayout *ret;
+ PyObject *py_ret;ret = pango_cairo_create_layout(PycairoContext_GET(self));
/* pygobject_new handles NULL checking */
- return pygobject_new((GObject *)ret);
+ py_ret = pygobject_new((GObject *) ret);
+ if (ret) {
+ g_object_unref(ret);
+ }
+ return py_ret;
}
static PyObject *
该补丁已经被ArchLinux社区收录:https://lists.archlinux.org/pipermail/arch-commits/2015-September/291622.html。
Miraclecast
https://github.com/albfan/miraclecast/tree/wip/source-impl
这个补丁主要是基于 Miraclecast 项目, 实现了实时本地影音发送端功能,让开放设备间能有双向的投屏互连功能。
PulseAudio
modules: support XDG_DATA_DIRS when find desktop files
https://patchwork.freedesktop.org/patch/189110/
这个补丁主要是基于 PulseAudio 项目, 实现了在查找桌面文件时支持XDG_DATA_DIRS。
Qt
https://codereview.qt-project.org/#/c/217601/
这个补丁主要是修复了QtQuick使用软件绘制后端, 且在高分屏下开启非整数倍缩放时,绘制的圆角矩形模糊。
欢迎加入
希望更多的热爱开源的开发者加入“回馈开源”的行动,推动中国开发者在国际开源社区的影响力,让中国的开源运动能够源远流长的发展下去。