青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

戰魂小筑

討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

#

我們的工程使用notepad++掛載protobuf的protoc代碼生成器, 每次生成后, 助手都要手動parse一次, 很麻煩. 研究了下VC助手的選項, 按下圖配置即可靜默刷新文件

image

posted @ 2013-11-13 10:39 戰魂小筑 閱讀(1682) | 評論 (1)編輯 收藏

http://www.andersriggelsen.dk/glblendfunc.php

即便是老外的教科書也是晦澀的,不如幾行js來的爽快

posted @ 2013-11-12 13:58 戰魂小筑 閱讀(1920) | 評論 (0)編輯 收藏

我使用的是VS2010, 老版本的未測

call "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
    cd 你的工程sln目錄

MSBuild “你的工程.sln” /t:Build /p:Configuration=Release /maxcpucount:4

解釋: 首先調用VC上下文建立批處理, 轉到你的sln目錄,保證工作目錄正確, /maxcpucount是并行編譯, 根據你的需求配置即可

posted @ 2013-11-05 15:20 戰魂小筑 閱讀(2626) | 評論 (1)編輯 收藏

距離第一次使用HG已經由2,3年了。 從第一次將HG用于自己的項目, 用U盤同步代碼. 到現在將HG應用于linux, 版本差異發布, 項目內部多人的分布式開發,已經感覺非常熟練。

我們的項目的客戶端和服務器均由C++開發,由于HG設計的理念是1個工程對應1個庫, 因此我們的客戶端和服務器是分開的兩個HG代碼庫。這種思想和SVN管理的代碼有很大不同。SVN時代的游戲工程大多是這樣安排目錄的:

common <-客戶端和服務器共享的庫

client<-客戶端的代碼

server<-服務器的代碼

通過SVN強大的權限控制給不同的前后端賦予權限,前后端程序將獲得不同的目錄組合。SVN下的這種工程組織方法能很好的解決單一語言跨工程的代碼,協議共享問題。雖然現在各種Erlang,Java的服務器語言與as3,lua的不同客戶端腳本語言混雜的時代已經無所謂這種老式設計思想。但是對于我們純C++的手游來說,還是必須面對分布式代碼管理工具下的代碼跨庫共享問題。

我就這個問題與多年前被我推薦過HG的朋友討論起來,他們也存在我們這個問題,但是他們的解決方法就是每個工程一個庫。然后被我問到:“同步一次代碼,一次次的打開不同的庫(他們客戶端+服務器一共6到7個HG代碼庫),進行同步, 完成后, 還要反向pull,不累啊?”, 朋友回答:“習慣就好”

隨后,我也翻查了git對多項目的支持。得到的答案也是跟HG一樣的, 這類分布式代碼管理工具本身的設計理念只有賬號,而無權限, 本身就是基于開源代碼精神設計的工具, 如果分了權限,豈不是違背開源精神(這是我想的微笑)。因此如果想管理多個項目代碼, 要么多庫,要么合庫。

posted @ 2013-10-25 22:51 戰魂小筑 閱讀(2657) | 評論 (2)編輯 收藏

將boost更新到1.53時, 發現luabind死活編譯不過, 報錯如下

error: missing binary operator before token "("

根據老外的描述, boost中的BOOST_PP_ITERATION_FLAGS從1.49版本后發生了一些變化.

在git找到一個patch, 鏈接在此

以下簡單描述

修改call_function.hpp, call_member.hpp及wrapper_base.hpp

去掉#elif BOOST_PP_ITERATION_FLAGS() == 1

更換為

#else

#if BOOST_PP_ITERATION_FLAGS() == 1

然后在源碼底部加一個#endif即可

posted @ 2013-09-24 16:46 戰魂小筑 閱讀(2367) | 評論 (0)編輯 收藏

最近發現一個Qt寫的切圖軟件, 導入PNG圖片可以顯示, 而JPEG圖片無法顯示. 開發機正常. Google了一下, 發現Qt通過外部插件機制支持各種擴展功能.

在啟動前, 添加如下代碼:

QApplication qapp(argc, argv);   

qapp.addLibraryPath(QCoreApplication::applicationDirPath()+"/plugins");

將QT開發目錄下: Qt\4.8.2\plugins\拷貝到Qt的exe目錄即可

posted @ 2013-08-10 09:44 戰魂小筑 閱讀(795) | 評論 (0)編輯 收藏

這里不能不說Google確實搜了1天都沒解決問題, baidu第一個就解決了...

cygwin參考這里

http://my.oschina.net/tonywolf/blog/49214

簡單的說

1.下載cygwin的網絡安裝包(第一次安裝只能這樣)

2. 選擇靠前一點的網站進行下載( 下好的包可以留著, 下次安裝直接從文件夾中選擇就可以安裝)

cygwin下使用NDK編譯boost參考這里

http://blog.sina.com.cn/s/blog_a6946c8a01016aot.html

細節注意:

1. boost官網下載boost_1_53_0.tar.bz2, 解壓放在android-ndk-r8e/sources下

2. 生成boost編譯工具: 在boost目錄下運行 ./bootstrap.sh 或者 bootstrap.bat 生成 b2

3. 修改 boost/tools/build/v2/user-config.jam 內容修改如下

import os ;
 
if [ os.name ] = CYGWIN || [ os.name ] = NT {
androidPlatform = windows ;
}
else if [ os.name ] = LINUX {
androidPlatform = linux-x86_64 ;
}
else if [ os.name ] = MACOSX {
androidPlatform = darwin-x86 ;
}
 
modules.poke : NO_BZIP2 : 1 ;
ANDROID_NDK = ../.. ;
using gcc : android4.6 : $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.6/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :
<archiver>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.6/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar
<ranlib>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.6/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib
<compileflags>--sysroot=$(ANDROID_NDK)/platforms/android-9/arch-arm
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.6/include
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include
<compileflags>-DNDEBUG
<compileflags>-D__GLIBC__
<compileflags>-DBOOST_FILESYSTEM_VERSION=3
<compileflags>-lstdc++
<compileflags>-lgnustl_shared
<compileflags>-mthumb
<compileflags>-fno-strict-aliasing
<compileflags>-std=gnu++11
<compileflags>-O2
;
 

4. 為了安全起見, 我打了個BoostForAndriod上的補丁: 手動修改下就好了

 

diff -ruN boost_1_53_0-boot/boost/asio/detail/socket_types.hpp boost_1_53_0-patched/boost/asio/detail/socket_types.hpp
--- boost_1_53_0-boot/boost/asio/detail/socket_types.hpp     2012-01-15 14:46:25.000000000 +0100
+++ boost_1_53_0-patched/boost/asio/detail/socket_types.hpp     2012-06-27 19:19:01.279562338 +0200
@@ -123,7 +123,12 @@
typedef int socket_type;
const int invalid_socket = -1;
const int socket_error_retval = -1;
+// @Moss - Some platforms do not define it (Android)
+#if defined(INET_ADDRSTRLEN)
const int max_addr_v4_str_len = INET_ADDRSTRLEN;
+#else // defined(INET_ADDRSTRLEN)
+const int max_addr_v4_str_len = 16;
+#endif // defined(INET_ADDRSTRLEN)
#if defined(INET6_ADDRSTRLEN)
const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE;
#else // defined(INET6_ADDRSTRLEN)
diff -ruN boost_1_53_0-boot/boost/asio/ip/impl/address_v6.ipp boost_1_53_0-patched/boost/asio/ip/impl/address_v6.ipp
--- boost_1_53_0-boot/boost/asio/ip/impl/address_v6.ipp     2012-01-15 14:46:25.000000000 +0100
+++ boost_1_53_0-patched/boost/asio/ip/impl/address_v6.ipp     2012-06-27 19:19:11.029581297 +0200
@@ -11,6 +11,23 @@
#ifndef BOOST_ASIO_IP_IMPL_ADDRESS_V6_IPP
#define BOOST_ASIO_IP_IMPL_ADDRESS_V6_IPP
 
+// @Moss - Define IPv6 macros
+#if !defined(IN6_IS_ADDR_MULTICAST) 
+#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
+#endif
+
+#if !defined(IN6_IS_ADDR_MC_NODELOCAL)
+#define IN6_IS_ADDR_MC_NODELOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) \
+         && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
+#endif
+
+#if !defined(IN6_IS_ADDR_MC_GLOBAL)
+#define IN6_IS_ADDR_MC_GLOBAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) \
+         && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
+#endif
+
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
diff -ruN boost_1_53_0-boot/boost/config/user.hpp boost_1_53_0-patched/boost/config/user.hpp
--- boost_1_53_0-boot/boost/config/user.hpp     2004-01-10 13:10:00.000000000 +0100
+++ boost_1_53_0-patched/boost/config/user.hpp     2012-06-27 19:18:46.129532736 +0200
@@ -13,6 +13,15 @@
//  configuration policy:
//
 
+// Android defines
+#define __arm__ 1
+#define _REENTRANT 1
+#define _GLIBCXX__PTHREADS 1
+// There is problem with std::atomic on android (and some other platforms).
+// See this link for more info:
+// https://code.google.com/p/android/issues/detail?id=42735#makechanges
+#define BOOST_ASIO_DISABLE_STD_ATOMIC 1
+
// define this to locate a compiler config file:
// #define BOOST_COMPILER_CONFIG <myheader>
 
diff -ruN boost_1_53_0-boot/boost/detail/endian.hpp boost_1_53_0-patched/boost/detail/endian.hpp
--- boost_1_53_0-boot/boost/detail/endian.hpp     2011-03-29 23:58:48.000000000 +0200
+++ boost_1_53_0-patched/boost/detail/endian.hpp     2012-06-27 19:18:39.359519453 +0200
@@ -31,7 +31,7 @@
// GNU libc offers the helpful header <endian.h> which defines
// __BYTE_ORDER
 
-#if defined (__GLIBC__)
+#if defined (__GLIBC__) || defined(ANDROID)
# include <endian.h>
# if (__BYTE_ORDER == __LITTLE_ENDIAN)
#  define BOOST_LITTLE_ENDIAN
diff -ruN boost_1_53_0-boot/boost/interprocess/detail/workaround.hpp boost_1_53_0-patched/boost/interprocess/detail/workaround.hpp
--- boost_1_53_0-boot/boost/interprocess/detail/workaround.hpp     2011-12-26 18:21:36.000000000 +0100
+++ boost_1_53_0-patched/boost/interprocess/detail/workaround.hpp     2012-06-27 19:18:52.909546004 +0200
@@ -54,7 +54,7 @@
    #endif
 
    //Check for XSI shared memory objects. They are available in nearly all UNIX platforms
-   #if !defined(__QNXNTO__)
+   #if !defined(__QNXNTO__) && !defined(ANDROID)
       #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS
    #endif
 
diff -ruN boost_1_53_0-boot/libs/filesystem/src/operations.cpp boost_1_53_0-patched/libs/filesystem/src/operations.cpp
--- boost_1_53_0-boot/libs/filesystem/src/operations.cpp     2012-01-28 15:40:16.000000000 +0100
+++ boost_1_53_0-patched/libs/filesystem/src/operations.cpp     2012-06-27 19:19:19.269597266 +0200
@@ -73,13 +73,15 @@
     const fs::path dot_dot_path("..");
#   include <sys/types.h>
#   include <sys/stat.h>
-#   if !defined(__APPLE__) && !defined(__OpenBSD__)
+#   if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__) && !defined(ANDROID)
#     include <sys/statvfs.h>
#     define BOOST_STATVFS statvfs
#     define BOOST_STATVFS_F_FRSIZE vfs.f_frsize
#   else
#     ifdef __OpenBSD__
#     include <sys/param.h>
+#     elif defined(__ANDROID__) || defined(ANDROID) // @Moss - Android messes up a bit with some headers, this one is the correct one :D
+#     include <sys/vfs.h>
#     endif
#     include <sys/mount.h>
#     define BOOST_STATVFS statfs
@@ -206,7 +208,19 @@
          || ::mkdir(to.c_str(),from_stat.st_mode)!= 0))
#   define BOOST_COPY_FILE(F,T,FailIfExistsBool)copy_file_api(F, T, FailIfExistsBool)
#   define BOOST_MOVE_FILE(OLD,NEW)(::rename(OLD, NEW)== 0)
+#if defined(__ANDROID__) || defined(ANDROID)
+    int BOOST_RESIZE_FILE(const char *path, off_t size)
+    {
+      int result = -1;
+      int fd = open(path, O_WRONLY);
+      if (fd != -1)
+        result = ftruncate(fd, size);
+      close(fd);
+      return result;
+    }
+#else
#   define BOOST_RESIZE_FILE(P,SZ)(::truncate(P, SZ)== 0)
+#endif
 
#   define BOOST_ERROR_NOT_SUPPORTED ENOSYS
#   define BOOST_ERROR_ALREADY_EXISTS EEXIST

 

5. 命令行編譯:

./b2 --without-python --without-mpi --without-serialization toolset=gcc-android4.6 link=static runtime-link=static target-os=linux --stagedir=android

使用編譯完成的boost庫

1. 將編譯boost_1_53_0\android\lib\ 下的.a庫 及boost_1_53_0\boost\下的頭文件拷貝出來放在工程的boost4android目錄下

2. 在boost4android目錄下,創建Android.mk, 內容如下

LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_atomic
LOCAL_SRC_FILES:= lib/libboost_atomic.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_chrono
LOCAL_SRC_FILES:= lib/libboost_chrono.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_context
LOCAL_SRC_FILES:= lib/libboost_context.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_date_time
LOCAL_SRC_FILES:= lib/libboost_date_time.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_exception
LOCAL_SRC_FILES:= lib/libboost_exception.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_filesystem
LOCAL_SRC_FILES:= lib/libboost_filesystem.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_graph
LOCAL_SRC_FILES:= lib/libboost_graph.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_iostreams
LOCAL_SRC_FILES:= lib/libboost_iostreams.a 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_math_c99
LOCAL_SRC_FILES:= lib/libboost_math_c99.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_math_c99f
LOCAL_SRC_FILES:= lib/libboost_math_c99f.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_math_c99l
LOCAL_SRC_FILES:= lib/libboost_math_c99l.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_math_tr1
LOCAL_SRC_FILES:= lib/libboost_math_tr1.a 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_math_tr1f
LOCAL_SRC_FILES:= lib/libboost_math_tr1f.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_math_tr1l
LOCAL_SRC_FILES:= lib/libboost_math_tr1l.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_program_options
LOCAL_SRC_FILES:= lib/libboost_program_options.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_random
LOCAL_SRC_FILES:= lib/libboost_random.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_regex
LOCAL_SRC_FILES:= lib/libboost_regex.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_system
LOCAL_SRC_FILES:= lib/libboost_system.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_thread
LOCAL_SRC_FILES:= lib/libboost_thread.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= boost_timer
LOCAL_SRC_FILES:= lib/libboost_timer.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
 
可以根據自己的需要調整以上包含
 
3. 在應用程序的Android.mk中添加

LOCAL_WHOLE_STATIC_LIBRARIES += boost_system
LOCAL_WHOLE_STATIC_LIBRARIES += boost_filesystem
LOCAL_WHOLE_STATIC_LIBRARIES += boost_thread

用多少, 包多少

添加異常支持 LOCAL_CPPFLAGS += –fexceptions

 

添加模塊引用

$(call import-module,boost4android)

posted @ 2013-07-20 16:23 戰魂小筑 閱讀(3571) | 評論 (2)編輯 收藏

protobuf就是為懶人而造的工具, 啥協議, 啥配置文件, 統統定義proto, 解析就ok, 非常方便

 

文本格式的解析錯誤不能使用捕獲錯誤來獲取, 因此,我們需要使用自定義的錯誤收集器進行收集, 看代碼:

#include <google/protobuf/text_format.h>
#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
#include <google/protobuf/io/tokenizer.h>
 
class PBTextErrorCollector : public google::protobuf::io::ErrorCollector
{
public:
    PBTextErrorCollector( const std::string& FileName )
        : mFileName( FileName )
    {
 
    }
 
    virtual void AddError(int line, int column, const string& message)
    {
        CCLog("%s(%d:%d) %s ", mFileName.c_str(), line, column, message.c_str() );
    }
 
    virtual void AddWarning(int line, int column, const string& message) 
    {
        CCLog("%s(%d:%d) %s ", mFileName.c_str(), line, column, message.c_str() );
    }
 
private:
    std::string mFileName;
};
 

解析代碼

google::protobuf::TextFormat::Parser P;        
    P.RecordErrorsTo( &PEC );
    P.Parse( &AIS, &AF );

 

另外: 文本格式的注釋使用unix shell風格: 以#開頭

下面是我的文本格式的配置文件

 

AnchorPointX: 0.5
AnchorPointY: 0

SpriteScale: 2

ComponentName: "ActorActionManager"
ComponentName: "ActorFrameEventDispatcher"
#ComponentName: "SoundFXController"
ComponentName: "RoleDeltaMoveController"
ComponentName: "RoleBehaviorDirector"

InitAction: AA_Idle

Animations 
{
  AnimationName: "mai_idle"
  AnimationInterval: 0.067
}
posted @ 2013-07-09 18:29 戰魂小筑 閱讀(7067) | 評論 (2)編輯 收藏

c++0x中已經添加了諸如function, bind等需要boost支持的功能, 不再需要編譯復雜的boost了

在你的Android.mk文件中添加 LOCAL_CPPFLAGS += -std=gnu++0x即可

posted @ 2013-07-01 16:09 戰魂小筑 閱讀(2220) | 評論 (1)編輯 收藏

最近調試程序發現空指針老無法定位, 使用一個最簡單的main函數做空指針檢查也一樣, 具體癥狀見圖

image

pdb加載是正常的, 但是堆棧沒顯示如此簡單的空指針訪問位置. Google了以下

http://blogs.msdn.com/b/debugger/archive/2010/05/12/visual-studio-debugger-fails-to-catch-unhandled-exception-for-a-windows-form-or-wpf-application.aspx

解決方法: Debug->Exception中將所有異常勾選即可

 

不知道哪里的設置導致如此詭異的問題, 害的我重裝一次..

posted @ 2013-06-27 11:05 戰魂小筑 閱讀(2320) | 評論 (0)編輯 收藏

僅列出標題
共26頁: First 3 4 5 6 7 8 9 10 11 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧洲一区二区天堂久久| 亚洲承认在线| 国产精品一区一区| 久久野战av| 亚洲欧美日韩网| 一区二区三区四区五区精品视频| 小黄鸭精品aⅴ导航网站入口| 99国产精品99久久久久久粉嫩| 欧美在线视频网站| 久久久福利视频| 欧美亚洲日本网站| 久久久91精品| 亚洲第一区在线观看| 蜜臀久久99精品久久久画质超高清 | 欧美在线免费看| 欧美在现视频| 欧美激情一区二区三区| 久久九九免费视频| 久久资源av| 国产精品萝li| 亚洲国产乱码最新视频| 1024亚洲| 久久国产精品一区二区三区| 一本大道久久a久久精品综合| 亚洲美女啪啪| 久久久久久免费| 亚洲欧洲精品一区二区| 一本大道久久精品懂色aⅴ| 亚洲一级在线观看| 美脚丝袜一区二区三区在线观看| 香蕉久久国产| 国产精品一区二区久久精品 | 亚洲一区二区三区在线看| 亚洲亚洲精品在线观看| 久久露脸国产精品| 国产精品三级久久久久久电影| 黄网站免费久久| 欧美日韩在线一区| aa国产精品| 制服诱惑一区二区| 欧美精品在线极品| 日韩视频在线观看免费| 久久亚洲国产精品日日av夜夜| 亚洲国产成人久久| 欧美日韩xxxxx| 午夜性色一区二区三区免费视频| 欧美激情四色| 欧美jjzz| 亚洲欧美中日韩| 欧美综合国产精品久久丁香| 欧美国产大片| 午夜久久tv| 欧美一区二区三区视频在线| 欧美色偷偷大香| 久久精品国产亚洲5555| 性色av一区二区三区红粉影视| 国产精品试看| 亚洲第一中文字幕| 国产精品www994| 欧美69wwwcom| 国产精品私人影院| 亚洲国产日韩欧美在线图片| 久久在线观看视频| 午夜亚洲性色视频| 蜜桃久久精品一区二区| 亚洲少妇一区| 欧美人在线观看| 欧美激情一区二区三区四区| 久久成人精品无人区| 亚洲国产日韩美| 老司机午夜精品| 久久精品国产精品亚洲综合| 欧美一级播放| 欧美精品一区二区视频| 久久九九免费| 国产日韩欧美a| 午夜免费在线观看精品视频| 狠狠色丁香久久综合频道| 欧美成年人视频网站| 国产精品久久久久91| 欧美电影在线播放| 亚洲激情网址| 欧美日韩中文精品| 亚洲影院污污.| 久久国产婷婷国产香蕉| 国产精品麻豆va在线播放| 亚洲精品一区二区三区不| 亚洲大胆av| 欧美激情黄色片| 性色一区二区三区| 欧美高清自拍一区| 亚洲一区图片| 好吊日精品视频| 欧美视频一区二区| 久久精品天堂| 亚洲一区二区伦理| 欧美ab在线视频| 欧美一级午夜免费电影| 国产日本欧美一区二区| 久久成人免费电影| 欧美福利一区二区三区| 亚洲免费av网站| 国产一区二区黄色| 欧美精品1区2区| 麻豆国产精品777777在线| 91久久亚洲| 欧美激情一区二区三区高清视频| 一级日韩一区在线观看| 国产精品综合| 欧美日韩国产专区| 欧美成人a视频| 美女主播视频一区| 久久精品最新地址| 亚洲少妇中出一区| 99热免费精品| 亚洲色图制服丝袜| 一区二区三区视频在线看| 国产一区二区丝袜高跟鞋图片| 男人的天堂亚洲| 美女精品在线观看| 欧美成人第一页| 欧美日韩一区二区在线播放| 亚洲综合色激情五月| 亚洲精品免费在线播放| 欧美电影免费观看| 欧美激情亚洲激情| 一本色道精品久久一区二区三区 | 国产九九精品视频| 国产精品夜夜夜一区二区三区尤| 一本久久a久久精品亚洲| 91久久精品久久国产性色也91| 激情久久婷婷| 亚洲视频1区2区| 亚洲自拍另类| 欧美激情1区2区3区| 亚洲高清免费视频| 亚洲自拍偷拍福利| 久久婷婷激情| 国产色爱av资源综合区| 国产深夜精品| 亚洲私拍自拍| 亚洲激情视频网| 久久九九久久九九| 国产亚洲欧美一区在线观看| 国产精品自拍在线| 亚洲图片欧洲图片日韩av| 欧美在线亚洲综合一区| 免费视频久久| 久久精品女人| 国产在线精品自拍| 久久九九精品99国产精品| 在线免费高清一区二区三区| 在线观看91精品国产麻豆| 亚洲美女视频在线观看| 久久青青草原一区二区| 亚洲精品视频免费在线观看| 99精品国产在热久久| 久色婷婷小香蕉久久| 国模私拍视频一区| 久久国产一区二区| 久久精品日产第一区二区三区| 欧美日韩伦理在线免费| 亚洲电影免费在线观看| 久久久久在线观看| 久久露脸国产精品| 亚洲国产日韩综合一区| 久久综合网hezyo| 免费不卡中文字幕视频| 国产麻豆精品视频| 久久―日本道色综合久久| 亚洲欧美日韩一区在线| 国产欧美日韩中文字幕在线| 亚洲精品网站在线播放gif| 久久亚洲综合网| 欧美日韩福利视频| 卡通动漫国产精品| 国产精品v欧美精品v日本精品动漫| 99视频一区二区| 久久精品理论片| 日韩亚洲不卡在线| 久久精品成人| 亚洲一区一卡| 欧美日韩另类一区| 亚洲国产日本| 亚洲高清二区| 久久久蜜桃精品| 久久久国产一区二区| 欧美福利视频网站| 亚洲电影在线| 伊人精品成人久久综合软件| 久久精品最新地址| 国产欧美激情| 亚洲欧美另类国产| 亚洲小说欧美另类社区| 久久久成人精品| 久久久久久999| 午夜一区在线| 久久精品一区四区| 红桃视频欧美| 欧美大片一区|